gpt4 book ai didi

c# - 对象序列化 : selecting individual properties

转载 作者:行者123 更新时间:2023-11-30 22:36:44 26 4
gpt4 key购买 nike

一个愚蠢的问题:假设我有一个存储在 View 状态中的对象。我将其标记为可序列化。我还在我的 WCF 服务中重复使用相同的对象。但是 Web 服务序列化并公开了一些不需要/不安全地显示给服务客户端的内部属性。有没有办法允许 ViewState 而不是 Web 服务的字段/属性序列化? [NonSerialized] 隐藏两者的属性。我知道我可以为 Web 服务使用实现 POCO,但我想保持方法/对象签名在类名方面保持不变。只是想知道是否有办法。否则,我将不得不要么在 ViewState 中没有这些字段,要么创建 POCO,让客户担心重新实现他们的客户。

谢谢

最佳答案

是的,在为 Web 服务创建 DataContract 时,您可以使用 [DataMember] 属性标记要包含在服务请求和回复中的成员。

[DataContract]
[Serializable]
public class MyData
{
private int id_value;

// Apply the DataMemberAttribute to the property.
[DataMember]
public int ID
{

get { return id_value; }
set { id_value = value; }
}

public int DontExposeMeToWcf { get; set; }
}

编辑:在 .NET 4.0 中,您还可以使用 [IgnoreDataMember] 属性从序列化中排除成员。来自 Using Data Contracts :

By default, the DataContractSerializer infers the data contract and serializes all publicly visible types. All public read/write properties and fields of the type are serialized. You can opt out members from serialization by using the IgnoreDataMemberAttribute.

The IgnoreDataMemberAttribute attribute is only honored when used with unmarked types. This includes types that are not marked with one of the DataContractAttribute, SerializableAttribute, CollectionDataContractAttribute, or EnumMemberAttribute attributes, or marked as serializable by any other means (such as IXmlSerializable).

关于c# - 对象序列化 : selecting individual properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6844823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com