2011-08-05 9 views
0

私は私がしたいときに、私はこの方法名前は

[OperationContract] 
void DoActionMailDirectLinkContent(string toAddress, Actions.MailDirectLinkContent mailDirectLinkContent); 

を持っている私のWCFサービスでそれ

[DataContract] 
public class Actions 
{ 
    [DataContract] 
    public enum MailDirectLinkContent 
    { 
     [EnumMember] 
     [DescriptionAttribute("Second account holder")] 
     SecondAccountHolder = 0, 

     [EnumMember] 
     [DescriptionAttribute("Legal representative")] 
     LegalRepresentative = 1, 

     [EnumMember] 
     [DescriptionAttribute("Authorized representative")] 
     AuthorizedRepresentative = 2 
    } 
} 

に列挙して、クラスアクションを持っています(クラス名と列挙名の間にドットが消える)

var myValue = ActionsMailDirectLinkContent.AuthorizedRepresentative; 

:それはこのように来る、私のWebクライアントでこの列挙型を使用します

私はこの動作のためのまともな説明があると思うが、私は1つを見つけることができませんでした。

UPDATE: は、私はクラスの外に列挙型を取り、彼らはまだ一緒にグループ化されているように、サブフォルダにそれを置きます。この変更の理由はanother issueです。私はこのようにして解決しました。

答えて

2

WCFは、Webサービスメソッドから返されるタイプの独自の名前を生成します。通常はローカル名に基づいて名前を付けようとしますが、実際には型を「名前空間」にすることはできないと推測していますので、型の中に.を含めることはできません。したがって、WCFは、そのサービスの目的のために、わかりやすい名前を持つが、SOAPスキーマ(または使用しているバインディング)に適合する列挙型を作成するために最善を尽くしています。

1

シリアル化にはC#とは異なる規則があります。すべてのC#機能がサポートされるとは限りません。

ネストされた型を処理できないため、ネストされた型を処理することはできません。

OperationContractでメソッドをオーバーロードすることはできません。