응답 및 요청을 처리하는 코드를 작성합니다. 둘 다 XML 형식 일 수 있으며 둘 다 변환 및 직렬화를 통해 만들어진 C# Object 형식 일 수 있습니다. (.NET 2.0)T와 하위 클래스를 기반으로 유형을 결정하는 더 좋은 방법
응답 및 요청은 더 큰 메시지 유형의 기본 구현입니다. 지금 GetEligibility와 FindCandidates가 있습니다. 나는이 과정을 단순화하기 위해 제네릭을 사용하기로 결정했습니다 내 매핑 기능을 복제 할 수 없습니다 때문에
public partial class GetEligibilityResponseMessage : ResponseMessage
public partial class ResponseMessage : Message
, 그것은 밖으로 좋은 일하고있어 다음 Model.MessageModel 클래스의
예는 아래의 사용 :
는 기본 클래스 코드 내 코드가 처음이라고
public virtual Model.MessageModel.Message MapToModel<T>(XmlDocument xml)
{
V3Mapper mapper = new V3Mapper();
Model.MessageModel.Message message = mapper.MapToDomainModel<T>(xml, Environment) as Model.MessageModel.Message;
return message;
}
public virtual XmlDocument MapToXml<T>(Model.MessageModel.Message message)
{
V3Mapper mapper = new V3Mapper();
XmlDocument xml= mapper.MapToV3Message<T>(message, Environment);
return xml;
}
은, 그것은 XML의 documen있다 티. 이 문서가 요청으로 매핑된다는 것을 알고 있으므로 오버 라이딩되는 가상 메소드를 호출합니다. (그리고 나는 추악하다고 생각합니다.) 기본에 매핑 코드를 유지하는 이유는 코드를 복제하지 않는 것입니다,하지만 난 내가 다음으로 피하고 싶은 정확한 것은 일을 오전 찾을 :
GetEligibility : BaseClass로
public override Model.MessageModel.Message MapToModel<T>(XmlDocument xml)
{
if(typeof(T).IsAssignableFrom(typeof(GetEligibilityResponseMessage)))
{
return base.MapToModel<GetEligibilityResponseMessage>(xml);
}
else if (typeof(T).IsAssignableFrom(typeof(GetEligibilityRequestMessage)))
{
return base.MapToModel<GetEligibilityRequestMessage>(xml);
}
return null;//because this is a quick code snippet
}
인가를 이 일을하는 더 우아한 방법이 있습니까? 나는 항상 내가 응답이나 요청으로 일하고 있는지 알고있다. 기능을 열어 두어 너무 단단히 결합시키지 않고 동시에 기능적으로 빠르도록하고 싶습니다.
이것은 여러 가지 메시지 유형으로 구현 될 예정이며, 실제로는 복사/붙여 넣기 스타일이 싫어서 우아한 해결책이 될 것입니다.하지만 확실한지 모르겠습니다. (.NET 2.0)
제 조언은하지 마십시오. 그러면 혼란스러운 코드로 이어질 것입니다. –
똑같은 2 가지 기능을 10 가지 클래스로 복사/붙여 넣는 것과는 반대로? 내 차도 아니야. 나는 마지막 코드 블록의 팬이 아니기 때문에 그것에 대해 묻는 이유가있다. –
'GetEligibilityResponseMessage'와'GetEligibilityRequestMessage'에서 파생 된 클래스가 없다면, 재정의 된'MapToModel'은 기본 클래스와 동일하다. 타입 검사의 예외. 그렇다면'MapToModel' 메쏘드를 오버라이드하는 것은 무엇입니까? 타입 검사를 위해서인가? –