Como posso fazer uma classe C # com um membro como dicionários usando XSD?
Pergunta
Eu estou usando xsd.exe para fazer as classes C # para nossas configurações. Eu tenho uma configuração que é por servidor e por banco de dados, então eu quero a classe a se comportar como Dictionary
string serverName = "myServer";
int databaseId = 1;
FieldSettings fieldSettings = getFieldSettings();
string[] fields = fieldSettings[serverName][databaseId];
Como faço para representar que em XSD?
Solução
XSD define a estrutura de dados, não é realmente a abordagem de acesso. Eu não acho que você pode expressar "esta é uma pesquisa" em xsd:. Tudo é valores ou conjunto de valores / entidades
Se você quiser tratamento específico, você pode considerar a serialização personalizada -. Ou, alternativamente, considerar suas DTOs e sua trabalho classes como coisas separadas e simplesmente traduzir entre os dois
[editar] Como observa leppie - você pode escrever seu próprio indexador (tipicamente em uma classe parcial se gerando cs do xsd) que varre uma lista para localizar o item: isso lhe dará o uso de chamadas, mas não é realmente a experiência completa dicionário (singularidade, o (1) recuperação, etc)
Outras dicas
Este não é o que xsd
é utilizado. Você pode sempre adicionar seu próprio indexador para a classe parcial, e marcá-lo com [XmlIgnore]