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

1

如果您想对客户端隐藏任何属性,只需将[IgnoreDataMember]属性添加到该属性即可。

于 2012-05-23T09:19:34.353 回答
0

如果您在客户端和服务器之间共享类型程序集,除非您关闭来自引用程序集的重用类型(单击代理上的“配置服务引用”),否则它将是可见的。

如果您不共享程序集,它将不可见,因为类的代码是基于公开的合同生成的(您可以通过在 VS 中打开显示所有文件然后转到服务代理下生成的文件 Reference.cs 来查看它)。

DataMember 是DataContractSerializer的属性,因此如果您共享程序集,则该属性不会在服务器上序列化,也不会在客户端上初始化,但它是可见的。参考

于 2011-01-17T16:26:10.327 回答