Так у меня есть класс, Texture2DProcessor, который наследуется IXmlSerializable и неявным бросает и из Texture2DАтрибут C# [XmlElement] не подразумевает листинг типа?
public static implicit operator Texture2D(Texture2DProcessor o)
{
return o.Data;
}
public static implicit operator Texture2DProcessor(Texture2D o)
{
return o == null ? null : new Texture2DProcessor(o);
}
то у меня есть-структура, GunProperties, который содержит свойство Texture2D с атрибутом XMLElement с типом, установленным в Texture2DProcessor
Texture2D _sideSprite;
[XmlElement(typeof(Texture2DProcessor))]
public Texture2D SideSprite
{
get { return _sideSprite; }
set { _sideSprite = value; }
}
Я получаю следующее сообщение об ошибке выполнения
Cannot serialize member '...GunProperties.SideSprite' of type 'Microsoft.Xna.Framework.Graphics.Texture2D'
почему я s XmlSerializer не использует Texture2DProcessor для чтения и записи данных Xml?
Также я знаю, что мои методы ReadXml и WriteXml работают, потому что это работает отлично, и я могу использовать текстуру.
Texture2D texture;
XmlSerializer serializer = new XmlSerializer(typeof(Texture2DProcessor));
serializer.Deserialize(new FileStream(path, FileMode.Open), texture);
Причина я собираюсь через это смятение я использую monogame и трубопровод контента довольно перепутался специально для пользовательских типов и кроме этой проблемы у меня есть все это работает.
Ничего себе я не думал о том, отдельная собственность для моего textureprocessor. Это «[EditorBrowsable (EditorBrowsableState.Never)]« делает это так, чтобы он не появлялся в интеллекте? –
@ DanielJohnson: Yup. Вы * можете * по-прежнему ссылаться на него из кода, но, надеюсь, люди не будут :) –
Было бы неплохо, если бы у меня был только один атрибут, чтобы перейти на переменную, чтобы он использовал процессор. Он работал в этой [ссылке] (http://stackoverflow.com/questions/20084/xml-serialization-and-inherited-types) –