gpt4 book ai didi

c# - WCF 服务中的可序列化 vs 数据契约 vs 什么都没有

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

我将使用创建 WCF 服务时提供的入门示例

[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 时,实际的变量,无论是私有(private)的还是公共(public)的,对于主机都是可见的,而不是属性。如果我使用 NonSerialized,它会隐藏变量,但它也不会被传递。我明白了,我想我明白了为什么没有传递属性是因为没有什么可以序列化的?对吗?

[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 属性。这是为什么?

最佳答案

[DataContract] 属性是可选的。

那为什么要使用它呢?它让您可以控制序列化数据的内容和方式——例如,要包含和排除哪些属性。

如果没有它也能过得去,那很好,但您可能很快就会发现您需要更好地控制通过线路发送的数据内容和方式。

关于c# - WCF 服务中的可序列化 vs 数据契约 vs 什么都没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3095695/

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