【发布时间】:2015-06-02 18:13:20
【问题描述】:
所以,我有一个基础项目和几个修改版本。 BaseProject 包含类BaseClass,
namespace BaseProject.SomeClasses{
public abstract class BaseClass{
//...
}
}
虽然每个版本都包含多个 BaseClass 的继承者 - f.e. ProjectOne:
namespace BaseProject.VersionOne.SomeClasses{
public class InheritorClass : BaseClass{
//Some logic here...
}
}
和ProjectTwo:
namespace BaseProject.VersionTwo.SomeClasses{
public class InheritorClass : BaseClass{
//Some different logic here...
}
}
唯一不同的是命名空间的名称。
基础项目在运行时加载每个程序集并获取所有继承的类型。我需要创建 xml 文件,该文件应包含继承者的实例和一些指向应将实例反序列化为的类的指针:
...
<BaseClass xsi:type="InheritorClass"> <!-- From VersionOne -->
<PropOne></PropOne>
<PropTwo></PropTwo>
<PropThree></PropThree>
<!-- ... -->
</BaseClass>
<BaseClass xsi:type="InheritorClass"> <!-- From VersionTwo -->
<PropFour></PropFour>
<PropFive></PropFive>
<PropSix></PropSix>
<!-- ... -->
</BaseClass>
...
有没有办法将这个xml(包含两个版本的继承者的实例)反序列化为IEnumerable<BaseClass>?
【问题讨论】:
-
您需要使用给定的命名空间限定您的元素
-
@MartinCh,好的,但是如果我只能在运行时访问后者,如何链接 xml 命名空间和 C# 命名空间?
-
我没有得到你想要实现的逻辑 - 基类是父类 - 你的继承者类 - 被继承 - 专业化 - 你不能在不失去员工的情况下将孩子放回父类添加到孩子中
-
@MartinCh,每个继承者类都有与父类相同的方法,所以我可以重写它们并使用特定于继承者的参数。
标签: c# xml serialization xmlserializer