Итак, у меня есть базовый проект и несколько модифицированных версий. BaseProject содержит класс BaseClass,десериализация, специфичная для версии XML
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#, если я могу получить доступ к последнему только во время выполнения? –
Я не получаю логики того, чего вы хотите достичь. Базовый класс - это родительский объект - ваши наследственные классы - наследуются - специализации - вы не можете отбросить ребенка обратно родителям без потери персонала, который был добавлен в childs –