gpt4 book ai didi

c# - DataContract 将继承类型序列化为基类型

转载 作者:行者123 更新时间:2023-11-30 15:46:18 26 4
gpt4 key购买 nike

我正在尝试将类 B 序列化为 ita 基类 A 的实例。 DataContractSerializer 不允许我这样做。

序列化失败的例子如下:

class Program
{
[DataContract]
public class A
{
public int Id { get; set; }
}

[DataContract]
public class B : A
{

}


static void Main(string[] args)
{
A instance = new B { Id = 42 };

var dataContractSerializer = new DataContractSerializer(typeof(A));
var xmlOutput = new StringBuilder();
using (var writer = XmlWriter.Create(xmlOutput))
{
dataContractSerializer.WriteObject(writer, instance);
}

}
}

我知道通过添加 KnownTypes 属性可以轻松解决该问题。但是,我想将类 B 隐藏在项目中(不添加引用)。

是否有可能实现我想要的?我尝试了 XmlSerializer 但它给了我同样的问题(它在 XML 中添加了完整的实例类型名称)并且使用起来更加笨拙。

最佳答案

[DataContract(Name="YouCannotSeeMyName")]
[KnownTypes(typeof(B))]
public class B : A

你会得到

<A itype="YouCannotSeeMyName">
...
</A>

关于c# - DataContract 将继承类型序列化为基类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4410485/

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