Эй, у меня проблемы с созданием XmlSerializer, где дополнительные типы содержат типы с одинаковыми именами (но уникальными полными именами). Ниже приведен пример, иллюстрирующий мой сценарий.
Определения типов во внешней сборке, которыми я не могу манипулировать:
public static class Wheel
{
public enum Status { Stopped, Spinning }
}
public static class Engine
{
public enum Status { Idle, Full }
}
Класс, который я написал и который контролирует:
public class Car
{
public Wheel.Status WheelStatus;
public Engine.Status EngineStatus;
public static string Serialize(Car car)
{
var xs = new XmlSerializer(typeof(Car), new[] {typeof(Wheel.Status),typeof(Engine.Status)});
var output = new StringBuilder();
using (var sw = new StringWriter(output))
xs.Serialize(sw, car);
return output.ToString();
}
}
Конструктор XmlSerializer создает исключение System.InvalidOperationException с сообщением
«Произошла ошибка при отображении типа« Engine.Status »»
Это исключение имеет исключение InnerException типа System.InvalidOperationException и с сообщением
«Типы« Wheel.Status »и« Engine.Status »используют имя типа XML« Status »из пространства имен«. Используйте атрибуты XML для указания уникального имени XML и / или пространства имен для типа ».
Учитывая, что я не могу изменить типы перечисления, как я могу создать XmlSerializer, который будет успешно сериализовать Car?