开发者

Wcf - Hiding Properties?

I've got a class which looks a little like this....

[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; }
    }
}

....and I have a Wcf Service Library which has the following interface defined...

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

It's all working just fine, but in my client app (a compact framework application) the AreaTypeId property is exposed?

I thought that if I didn't add the [DataMember] att开发者_JAVA技巧ribute it wouldn't be seen by the client? What am not understanding???

Thanks,

ETFairfax


If you want to hide any property from client then just add [IgnoreDataMember] attribute to that property.


If you are sharing type assembly between client and server It will be visible unless you turn off reusing types from referenced assemblies (click "Configure Service Reference" on proxy).

If you are not sharing assembly it will not be visible because code for class is generated based on exposed contract (you can see it by turning on Show All Files in VS and then go to generated file Reference.cs under service proxy).

DataMember is attribute for DataContractSerializer so if you are sharing assembly the property will be not serialized on server and not initialized on client but it will be visible. Reference

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜