如何设置应用程序以使用DataContracts
本文关键字:DataContracts 应用程序 何设置 设置 | 更新日期: 2023-09-27 18:23:50
我正在用.NET开发一个桌面应用程序。我想把一些数据保存到一个文件中,这样以后我就可以在更改正在保存的数据时有一定的自由度,比如添加新字段,同时保留从旧格式读取保存的可能性。
此答案建议使用DataContractSerializer
而不是BinaryFormatter
。
但是,我不能在项目中的类上使用[DataContract]
属性。在using System.Runtime.Serialization;
之后,我仍然会收到关于未知类型的错误。
该项目的目标是.NET Framework 4。
我已经了解到数据合约是WCF框架的一部分,我认为我应该以某种方式配置我的项目来使用它。如何?
在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。