Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Wcf-隐藏属性?_C#_Wcf_Datamember - Fatal编程技术网

C# Wcf-隐藏属性?

C# Wcf-隐藏属性?,c#,wcf,datamember,C#,Wcf,Datamember,我有一节课看起来有点像这样 [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

我有一节课看起来有点像这样

[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);
IEnumerable GetSomeStuff(IEnumerable uploadedAreas);
一切正常,但是在我的客户端应用程序(一个紧凑的框架应用程序)中,
AreaTypeId
属性被公开了吗

我想如果我没有添加
[DataMember]
属性,客户端就看不到它了?我不明白什么

谢谢


ETFairfax

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

若您不共享程序集,它将不可见,因为类的代码是基于公开的约定生成的(您可以通过启用“在VS中显示所有文件”,然后转到“服务代理”下的“生成的文件引用.cs”来查看它)


DataMember是的属性,所以如果共享程序集,则该属性将不会在服务器上序列化,也不会在客户端上初始化,但它将可见

如果要对客户端隐藏任何属性,只需向该属性添加[IgnoreDataMember]属性。

您是如何在客户端上创建代理的?添加WebReference或使用NetCFSvcUtil?@pdiddy:如何创建客户端有什么关系?OP想要(尽我所能)避免将被诅咒的属性完全发送到该线上,而不仅仅是让客户端忽略它。只是在情况确实不同的情况下,我使用了“添加Web引用”@ FyOrdor,我最初认为通过Add Web引用方式可能不考虑DATAMANBUS属性,因为addweb引用更多地用于asmxweb服务。但是在进行快速测试之后,它确实考虑了属性。Etfirfax您可以忽略我的评论,或者如果您通过添加web引用生成了代理,您可以尝试使用NetCFSvcUtil,看看您是否有相同的行为。@pdiddy,我运行了NetCFSvcUtil(在本文之前我没有听说过它,并且弹出了一条错误消息!!显然没有修复程序…它被称为“共享”——“剪羊毛”是指你对绵羊或诸如此类的动物所做的——一次剪一次他们的头发while@baalazamon感谢您的回复。我右键单击智能设备项目中的Web引用,但它没有显示“配置服务引用”。这是因为它是一个智能设备项目。顺便说一句,我正在运行VS2008。另外,我(据我所知不是这样)共享程序集。我与中的模型有一个dll(如上所示)引用Model.dll的Wcf服务库,然后是具有Wcf服务库Web引用的智能设备应用程序。配置服务引用仅通过添加服务引用可用,这对智能设备无效。我起初没有看到compact客户端,但我可以向您保证不会发送数据如果它们没有用DataMember属性标记,您可以通过在setter中引发异常来轻松检查,如果序列化程序正在设置属性,它将失败。我已经停止为我的项目使用Wcf服务应用程序。我想我会将此标记为答案,以防其他人发现相同的问题……这可能会有帮助?!?!