나는 WCF 인터페이스를 통해 하지 전송 열거 형을 권하고 싶습니다. 다음 열거 있다고 가정합시다 : 클라이언트에 서비스 참조를 업데이트하지 않고
[ServiceContract]
public class Service1
{
[OperationContract]
public List<WeekdayEnum> GetWeekdays()
{
return new List<WeekdayEnum> { WeekdayEnum.Monday };
}
}
이 열거에 추가하면 위치 : 당신은 WCF를 통해 열거 형을 반환하는 경우
[DataContract]
public enum WeekdayEnum
{
[EnumMember]
Monday = 0
}
을, 모든 것이 잘 작동합니다 여전히 잘 : 클라이언트 서비스 참조를 업데이트하지 않고 서비스에서 추가 된 값을 반환하는 경우
[DataContract]
public enum WeekdayEnum
{
[EnumMember]
Monday = 0,
[EnumMember]
Tuesday = 1
}
그러나, 기존 클라이언트는 것입니다 휴식 : 기존 클라이언트를 지원하는 것이 중요하다 어디 프로젝트에서이 문제를 했어
[ServiceContract]
public class Service1
{
[OperationContract]
public List<WeekdayEnum> GetWeekdays()
{ // NetDispatcherFaultException on legacy clients that only have Monday
return new List<WeekdayEnum> { WeekdayEnum.Monday, WeekdayEnum.Tuesday };
}
}
. 해결책은 enum 대신 WCF를 통해 단순히 DTO를 전송하는 것이 었습니다. 예 : WeekdayEnum 간단한 DTO를 통해 값을 전송하여 대체 할 수 :
[DataContract]
public class WeekdayDto
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
}
이 방법은, 기존 고객 행복 유지.
열거 형 멤버를 추가해도 기능이 중단되지 않지만 열거 형 멤버가 사용중인 경우에는 제거됩니다. 추가는 서비스 구현이 변경되거나 새로운 서비스 계약이 추가되는 경우에만 유용합니다. – hungryMind