如何设置应用程序以使用DataContracts

本文关键字:DataContracts 应用程序 何设置 设置 | 更新日期: 2023-09-27 18:23:50

我正在用.NET开发一个桌面应用程序。我想把一些数据保存到一个文件中,这样以后我就可以在更改正在保存的数据时有一定的自由度,比如添加新字段,同时保留从旧格式读取保存的可能性。

此答案建议使用DataContractSerializer而不是BinaryFormatter

但是,我不能在项目中的类上使用[DataContract]属性。在using System.Runtime.Serialization;之后,我仍然会收到关于未知类型的错误。

该项目的目标是.NET Framework 4。

我已经了解到数据合约是WCF框架的一部分,我认为我应该以某种方式配置我的项目来使用它。如何?

如何设置应用程序以使用DataContracts

在C#中,命名空间可以在多个程序集之间共享。您必须添加对System.Runtime.Serialization.dll的引用,该引用包含[DataContract]属性。

当需要时,可能缺少指定Know Type属性

看看下面的例子:

public interface ICustomerInfo
{
    string ReturnCustomerName();
}
[DataContract(Name = "Customer")]
public class CustomerTypeA : ICustomerInfo
{
    public string ReturnCustomerName()
    {
        return "no name";
    }
}
[DataContract(Name = "Customer")]
public class CustomerTypeB : ICustomerInfo
{
    public string ReturnCustomerName()
    {
        return "no name";
    }
}
[DataContract]
[KnownType(typeof(CustomerTypeB))]
public class PurchaseOrder
{
    [DataMember]
    ICustomerInfo buyer;
    [DataMember]
    int amount;
}

您必须指定ICustomerInfo的类型,否则序列化引擎无法猜测的类型

只需将wcf服务模板添加到您的应用程序中,并在项目中声明您的函数和数据成员及其引用wcf。