0

基本的に私が以下を持っている場合:

[DataContract]
public class Foo
{
    [MyCustomAttribute(...)]
    [DataMember(IsRequired = true)]
    public int bar { get; set; }
}

MyCustomAttributeユーザーが「サービス参照の追加...」を使用してクラスを生成するときにが無視されるようにするには、どうすればよいですか。

基本的に、クライアントで生成されたコードのプロパティにその属性を設定したくありません。プロパティ自体を表示したいのですが、基本的にクライアントは次のようになります...

[DataContract]
public class Foo
{
    [DataMember(IsRequired = true)]
    public int bar { get; set; }
}
4

3 に答える 3

2

クライアントによって生成されるコードに属性を含める方法ありません

参照:http ://social.msdn.microsoft.com/Forums/en-US/wcf/thread/ce241118-bc79-4788-a739-c445a52fcd1d

于 2011-05-31T17:31:48.720 に答える
1

[DataMember]はシリアル化エンジンの一部であるため、必要です。プロキシに表示される理由は、プロキシがDataContractSerializerサービスと同じものを使用しているためです。IsRequiredが設定されてtrueいる場合、プロキシはクライアントを送信できるかどうか(必要な値が設定されている場合)を判断できます。

WSDLからプロパティが必要かどうかを判断できるためDataMemberAttribute、WSDLファイルに基づいて設定されます。サービスのソースコードではありません。プロキシは、デフォルトでは、ネット上で利用可能なサービスの説明から完全に生成されます。そして、他の回答が述べているように、あなたは確かにあなた自身のカスタム属性をプロキシにコピーすることはありません。

于 2011-05-31T19:08:25.280 に答える
-1

1つの可能性は、インターフェイスを作成し、属性をインターフェイスメソッドに配置することです。

具象クラスの代わりにインターフェースを照会することもできますが、WCFはクラスの具象実装のみを認識します。

あなたは言えた:

 [DataContract] 
 public class Foo : IFoo
 {
     [DataMember(IsRequired = true)]
     public int bar { get; set; } 
 }

 public interface IFoo 
 {
     [MyCustomAttribute(...)]
     int bar { get; set; } 
 }
于 2011-05-31T17:27:17.197 に答える