XSD架构:重写基本complexType的继承元素

|| 我们已经开始使用模式来为我们生成C#类,而我基本上是在尝试复制覆盖了从其基类继承的成员的类。我已经做了大量的搜索工作,并且对XSD还是很陌生,所以我不知道我是不是做错了所有事情,或者根本不可能。这是我要完成的工作的简化示例。
<xs:complexType name=\"ClientBase\" abstract=\"true\">
    <xs:sequence>
      <xs:element name=\"Company\" type=\"CompanyBase\" minOccurs=\"0\" maxOccurs=\"unbounded\" />
    </xs:sequence>  
  </xs:complexType>

  <xs:complexType name=\"CompanyBase\" abstract=\"true\">
    <xs:attribute name=\"Id\" type=\"xs:int\" use=\"required\" />
  </xs:complexType>

  <xs:complexType name=\"Company\">
    <xs:complexContent>
      <xs:extension base=\"CompanyBase\">
        <xs:attribute name=\"PartnerId\" type=\"xs:int\" use=\"required\" />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name=\"Client\">
    <xs:complexContent>
      <xs:extension base=\"ClientBase\">
        <xs:sequence>
          <!-- error occurs here -->
          <xs:element name=\"Company\" type=\"Company\" minOccurs=\"0\" maxOccurs=\"unbounded\" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
这显然是行不通的,因为它炸毁了我的客户类型,并给我一个错误,即“元素'公司'的多个定义导致内容模型变得模棱两可”。 我的目标是最终得到代表这一点的东西。
    public abstract class CompanyBase
    {
        public int Id { get; set; }

    }
    public class Company : CompanyBase
    {
        public int PartnerId { get; set; }
    }

    public abstract class ClientBase
    {
        public CompanyBase[] Company { get; set; }
    }

    public class Client : ClientBase
    {
        new public Company[] Company { get; set; }
    }
任何帮助将不胜感激。     
已邀请:
        您指定的复杂类型Client(具有一个名为Company的元素)扩展了ClientBase,ClientBase已经包含一个名为Company(属于CompanyBase的类型)的元素。因此,您的元素名称存在冗余。 另外:对于复杂类型,我建议遵循模式中的命名约定,以阐明它们是类型,而不是全局元素。即,将您的复杂类型命名为[Typename] Type,而不是[Typename]。从长远来看,它使事情变得不那么混乱,并且您也可以避免名称与全局元素冲突。     

要回复问题请先登录注册