2008-10-17 8 views
1

J'utilise xsd.exe pour créer les classes C# pour nos paramètres. J'ai un paramètre qui est par serveur et par base de données, donc je veux que la classe se comporte comme le dictionnaire < chaîne, chaîne [] [] >. Donc, je veux être en mesure de direComment créer une classe C# avec un membre de type dictionnaire utilisant XSD?

string serverName = "myServer"; 
int databaseId = 1; 
FieldSettings fieldSettings = getFieldSettings(); 

string[] fields = fieldSettings[serverName][databaseId]; 

Comment puis-je représenter cela dans XSD?

Répondre

2

xsd définit la structure de données, pas vraiment l'approche d'accès. Je ne pense pas que vous puissiez exprimer "ceci est une recherche" dans xsd: tout est soit des valeurs, soit un ensemble de valeurs/entités. Si vous souhaitez une manipulation spécifique, vous pouvez envisager une sérialisation personnalisée, ou bien considérer vos DTO et vos classes fonctionnant comme comme des choses distinctes, et simplement traduire entre les deux. Comme des notes de leppie - vous pouvez écrire votre propre indexeur (typiquement dans une classe partielle si vous générez cs à partir de la xsd) qui boucle sur la liste pour trouver l'élément: cela vous donnera l'utilisation de l'appelant, mais pas vraiment l'expérience du dictionnaire complet (unicité, O (1) récupération, etc)

+0

+1 pour ne pas capitaliser mon pseudo! :) – leppie

+0

@leppie - J'ai trouvé [Ctrl] + C, [Ctrl] + V sauve beaucoup d'offense. Vous seriez étonné combien de personnes continuent à me "corriger" à Mark. –

1

Ce n'est pas ce pour quoi xsd est utilisé. Vous pouvez toujours ajouter votre propre indexeur à une classe partielle, et le marquer avec [XmlIgnore]

Questions connexes