2014-09-01 3 views
3

각 유형을 특성으로 장식하는 대신 ContractNamespace을 사용하여 C# 열거 형에 대해 올바른 WSDL 네임 스페이스를 생성하는 데 어려움을 겪고 있습니다.WCF의 열거 형 네임 스페이스에 ContractNamespace 사용

다음 코드는 제대로 "http://www.mynamespace.co.za/"의 Person 유형을 생성하지만 어떤 이유로 Gender를 들어, "http://schemas.datacontract.org/2004/07/SomeOtherNamespace"다른 WSDL 네임 스페이스에 있습니다.

무엇이 누락 되었습니까? enum은 특별한 대우가 필요합니까?

[assembly: ContractNamespace("http://www.mynamespace.co.za/", ClrNamespace = "SomeOtherNamespace")] 

namespace SomeOtherNamespace 
{ 
    public class Person 
    { 
     public int Age { get; set; } 
     public Gender Gender { get; set; } 
    } 

    public enum Gender 
    { 
     Male, 
     Female, 
     Other 
    } 
} 

내 실제 코드에서 유형은 생성 된 외부 어셈블리에 있습니다. 유형은 사용자 정의 속성으로 쉽게 장식 될 수 없습니다. ContractNamespace도 열거 형에서 작동 할 수 있으면 완벽 할 것입니다 ...

즉, 다음 코드는 작동하지만 코드 생성 프로세스에 들어가기가 매우 어려울 수 있습니다.

[DataContract(Namespace = "http://www.mynamespace.co.za/")] 
public enum Gender 
{ 
    [EnumMember] 
    Male, 
    [EnumMember] 
    Female, 
    [EnumMember] 
    Other 
} 

답변

5

열거 형은 통증입니다. ContractNamespace 특성을 적용하려면 열거 형을 장식해야합니다.

[DataContract] 
public enum Gender 
{ 
    [EnumMember] 
    Male, 
    [EnumMember] 
    Female, 
    [EnumMember] 
    Other 
} 

원하는 WSDL 네임 스페이스에 유형이 표시되어야합니다.

관련 문제