在我的代码中,我有以下类来反序列化 XML:
public abstract class AssetBase
{
[XmlAttribute] public string Name { get; set; }
[XmlAttribute] public float RelativeX { get; set; }
[XmlAttribute] public float RelativeY { get; set; }
[XmlAttribute] public float RelativeZ { get; set; }
[XmlAttribute] public float ScaleX { get; set; }
[XmlAttribute] public float ScaleY { get; set; }
[XmlAttribute] public bool Visible { get; set; }
}
当我xsd.exe
为此定义架构时,架构会对其进行设置,因此需要这些属性进行验证。
我怎样才能设置这个类,以便用户可以将它们留空,因为并非所有这些都是强制性的?
编辑:我只是查看了它生成的 xsd 并看到:
<xs:complexType name="AssetBase" abstract="true">
<xs:attribute name="Name" type="xs:string" />
<xs:attribute name="RelativeX" type="xs:float" use="required" />
<xs:attribute name="RelativeY" type="xs:float" use="required" />
<xs:attribute name="RelativeZ" type="xs:float" use="required" />
<xs:attribute name="ScaleX" type="xs:float" use="required" />
<xs:attribute name="ScaleY" type="xs:float" use="required" />
<xs:attribute name="Visible" type="xs:boolean" use="required" />
</xs:complexType>
我很困惑为什么 Name 不是必需的,但其余的是......