我有一个看起来有点像这样的课......
[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]
属性,客户端就不会看到它?什么不理解???
谢谢,
ETFairfax
答案 0 :(得分:1)
如果要隐藏客户端中的任何属性,只需将 [IgnoreDataMember] 属性添加到该属性即可。
答案 1 :(得分:0)
如果要在客户端和服务器之间共享类型汇编,除非您关闭从引用的程序集中重用类型(单击代理上的“配置服务引用”),否则它将可见。
如果您不共享程序集,它将不可见,因为类的代码是基于公开的合同生成的(您可以通过打开VS中的显示所有文件然后转到服务代理下的生成文件Reference.cs来查看它)
DataMember是DataContractSerializer的属性,因此,如果您正在共享程序集,则该属性不会在服务器上序列化,也不会在客户端上初始化,但它将是可见的。 Reference