让我们从一堆假设开始这个线程:
第一个假设:我们有一个包含以下代码的库 (*.dll):
class Program {
static void Main(string[] args) {
XmlSerializer ser = new XmlSerializer(typeof(Foo));
}
}
public class Foo { public string name;}
第二个假设:我们有一个派生自 Foo 的类,我们称之为 Bar。
public class Bar : Foo { }
此类位于图书馆外。
现在神奇了:Bar 类是通过反射加载的,所以我们在编译时不知道它的存在。XmlSerializer
也不知道派生类的任何内容,并且因为我们在一个完全不同的库中,所以我们不能简单地在此处添加,XmlInclude
因为我们无法更改Foo
-class 的代码。那么有什么方法可以XmlSerializer
在 -class 的实例上使用现有的Bar
(我知道当前的实现ser
对于任何外部代码都完全不可见,但是让我们把它放在一边,假设我们可以从在Bar
类内)?
这是否可以通过使用类的属性Bar
(类定义前面的[System.Xml.Serialization...])来实现?