우리는 C# 클래스를 생성하기 위해 스키마를 사용하기 시작했으며 기본적으로 기본 클래스에서 상속 된 멤버를 재정 의하여 클래스를 복제하려고합니다. 나는 XSD에 대한 새로운 검색을 많이 했으므로 모든 문제가 잘못 될지 또는 가능한지 모르겠다. 다음은 내가 성취하고자하는 것을 단순화 한 예입니다.XSD 스키마 : 기본 complexType의 상속 된 요소 덮어 쓰기
<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; }
}
어떤 도움을 주시면 감사하겠습니다.
감사합니다. 그래, 내가 받고있는 오류의 원인을 이해합니다. 내가 궁금해하는 것은 내가하려는 일을 성취 할 수있는 또 다른 방법이 있다면 말이다. – Chuck
죄송합니다! 여기에 몇 가지 아이디어가 있습니다 : 1) 회사에서 회사에 이르기까지 클래스 Client에서 어레이의 이름을 바꿀 수 있습니다. 2) Client와 ClientBase를 별도의 네임 스페이스로 이동하면 동일한 이름의 요소를 가질 수 있습니다. –