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

标签 c# wcf serialization

我将使用您创建 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 时一切正常。

当我使用可序列化时,实际变量(无论是私有(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 服务中什么都没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3095695/

相关文章:

wcf - 在 IIS 中托管时如何从代码配置 WCF 服务?

c# - 客户端未收到 SignalR 消息

c# - 序列化 - 从流中查看对象图

C# 转发可变长度参数

c# - 在 MVC 5 中找不到 Microsoft.Web.Mvc 命名空间

c# - Powerpoint 中形状的部分下划线检查不起作用?

java - 方法被重写后,类不可序列化

c# - 异步调用新手问题

c# - IIS 上托管的 WCF 服务无法正常工作

java - 在 java : automatic thread-safety? 中序列化