C# WCF服务中的可序列化vs数据契约vs完全不存在
我将使用创建WCF服务时给出的初学者示例C# WCF服务中的可序列化vs数据契约vs完全不存在,c#,wcf,serialization,C#,Wcf,Serialization,我将使用创建WCF服务时给出的初学者示例 [DataContract] public class CompositeType { bool boolValue = true; string stringValue = "Hello "; [DataMember] public bool BoolValue { get { return boolValue; } set { boolValue = value; }
[DataContract]
public class CompositeType
{
bool boolValue = true;
string stringValue = "Hello ";
[DataMember]
public bool BoolValue
{
get { return boolValue; }
set { boolValue = value; }
}
[DataMember]
public string StringValue
{
get { return stringValue; }
set { stringValue = value; }
}
}
当我使用DataContract时,一切都正常
当我使用Serializable时,实际的变量,无论是私有的还是公共的,对主机而不是属性都是可见的。如果我使用非序列化,它会隐藏变量,但也不会传递。我明白了,我想我明白了为什么没有传递属性,因为没有要序列化的内容?对吗
[Serializable]
public class CompositeType
{
[NonSerialized]
bool boolValue = true;
[NonSerialized]
string stringValue = "Hello ";
public bool BoolValue
{
get { return boolValue; }
set { boolValue = value; }
}
public string StringValue
{
get { return stringValue; }
set { stringValue = value; }
}
}
如果我不提供任何属性,类将按预期返回,我不明白这一点
我的任务是获取现有业务对象并通过WCF使用它们?看起来我最好的选择是不使用它们,而不是添加DataContract属性。这是为什么?属性是可选的 那为什么要用它呢?它允许您控制序列化数据的内容和方式,例如,要包括和排除哪些属性
如果您没有它也能过得去,那很好,但您可能很快就会发现,您需要更好地控制数据通过网络发送的内容和方式。回答得很好!但是,Mike,没有DataContract,您不应该尝试过日子,因为它是面向WCF服务的