所以我有一个类,Texture2DProcessor,它继承了 IXmlSerializable 并隐式转换到 Texture2D
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,它包含一个带有 XmlElement 属性的 Texture2D 属性,其类型设置为 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'
为什么 XmlSerializer 不使用 Texture2DProcessor 来读写 Xml 数据?
我也知道我的 ReadXml 和 WriteXml 方法可以正常工作,因为它可以正常工作并且我可以使用纹理。
Texture2D texture;
XmlSerializer serializer = new XmlSerializer(typeof(Texture2DProcessor));
serializer.Deserialize(new FileStream(path, FileMode.Open), texture);
我遇到这个麻烦的原因是我正在使用monogame,并且内容管道非常混乱,特别是对于自定义类型,除了这个问题之外,我一切正常。