0

私はこのように見えるクラスを持っています....

[DataContract]
public partial class Area : ModelBase
{
    private String name;
    private Guid floorId;
    private Guid areaTypeId;
    private int assetCount;

    [DataMember] 
    public String Name
    {
        get { return name; }
        set { name = value; }
    }

    [DataMember] 
    public Guid FloorId
    {
        get { return floorId; }
        set { floorId = value; }
    }

    public Guid AreaTypeId
    {
        get { return areaTypeId; }
        set { areaTypeId = value; }
    }
}

....そして、次のインターフェイスが定義されているWcfサービスライブラリがあります...

 IEnumerable<Area> GetSomeStuff(IEnumerable<Area> uploadedAreas);

すべて正常に動作していますが、クライアント アプリ (コンパクトなフレームワーク アプリケーション) でAreaTypeIdプロパティが公開されていますか?

属性を追加しなければ[DataMember]、クライアントからは見えないと思いましたか? 何が理解できませんか???

ありがとう、

ETFエアファックス

4

2 に答える 2

0

クライアントとサーバー間でタイプアセンブリを共有している場合参照されるアセンブリからのタイプの再利用をオフにしない限り表示されます(プロキシで[サービス参照の構成]をクリックします)。

アセンブリを共有していない場合、クラスのコードは公開されたコントラクトに基づいて生成されるため、表示されません(VSで[すべてのファイルを表示]をオンにして、サービスプロキシで生成されたファイルReference.csに移動すると表示されます)。

DataMemberはDataContractSerializerの属性であるため、アセンブリを共有している場合、プロパティはサーバーでシリアル化されず、クライアントで初期化されませんが、表示されます。参照

于 2011-01-17T16:26:10.327 に答える