À l'aide d'un Dictionnaire<string, object> Dictionnaire<string, Dictionnaire<string, string>>
en C# j'ai besoin de conserver les données dans un objet dictionary, ressemble:
Dictionary<string, Dictionary<string, string>> MyDict =
new Dictionary<string, Dictionary<string, string>>();
Maintenant j'ai compris, que j'aurais besoin, dans certains cas, certains autres (pas de type dictionnaire de données) de la valeur des principaux dict.
Est-il un genre de Problème ou de limitation, si je viens d'exemple, le principal dict. comme:
Dictionary<string, object> MyDict = new Dictionary<string, object>();
dans le champ d'objet que je pourrais mettre de la chaîne, dictionnaire, que ce soit..
Merci d'avance,
Cordialement, Steven
le titre ne correspond pas au texte de votre question
Je ne pense pas que ce serait un problème. Vous seriez probablement juste besoin de le jeter comme ce qu'il est censé être pour y accéder.
Vous avez pu voir la réponse à cette stackoverflow.com/questions/569903/multi-value-dictionary est-ce que vous souhaitez?
C'est tellement bizarre exigence. Ma première suggestion serait de repenser la conception, pas vraiment. Il n'y a pas beaucoup d'infos disponibles dans la question de suggérer une. Sinon, je suppose que vous pourriez maintenir deux dictionnaires. Si pas de voir Oliver orientée objet de la solution. De loin le meilleur ici.
Je ne pense pas que ce serait un problème. Vous seriez probablement juste besoin de le jeter comme ce qu'il est censé être pour y accéder.
Vous avez pu voir la réponse à cette stackoverflow.com/questions/569903/multi-value-dictionary est-ce que vous souhaitez?
C'est tellement bizarre exigence. Ma première suggestion serait de repenser la conception, pas vraiment. Il n'y a pas beaucoup d'infos disponibles dans la question de suggérer une. Sinon, je suppose que vous pourriez maintenir deux dictionnaires. Si pas de voir Oliver orientée objet de la solution. De loin le meilleur ici.
OriginalL'auteur N471v3 | 2012-02-08
Vous devez vous connecter pour publier un commentaire.
Par l'utilisation de l'objet comme valeur dans votre dictionnaire, vous devrez vous acquitter de certains risques et complications:
Vous devriez revoir votre conception. Mais si vous voulez vraiment un la flexibilité que vous pourriez créer un nouveau type de travail, comme le type de la valeur. Quelque chose comme:
Votre dictionnaire principal de déclaration serait quelque chose comme:
Vous pouvez utiliser le ActiveType de la propriété ou de créer un enum qui permettrait de spécifier le type. Vous pourriez aussi avoir statique util fonctions dans la classe qui pourrait aider avec le retour de la droite de l'instance et le type...
OriginalL'auteur Paul Sasik
Oui, votre dictionnaire ne serait pas fortement typé plus - dans la première approche que l'on pourrait faire quelque chose comme:
Dans la seconde approche, ce n'est plus possible depuis que vous avez lancé en premier:
Il semble que votre problème pourrait être résolu avec une meilleure approche de la conception. Généralement, la nécessité de stocker différents types d'objets dans la même structure de données peut être évité par la re-conception de la solution - si pourquoi avez-vous besoin de faire cela?
Edit:
Si vous voulez juste pour gérer
null
valeurs, vous pourriez faire quelque chose comme:Ou enveloppé dans une méthode d'extension:
Merci à vous tous pour la rapidité et la bonne answears!
OriginalL'auteur BrokenGlass
Vous pouvez le faire. Après la récupération de données à partir du dictionnaire principal, vous aurez à jeter le résultat d'un type approprié:
Mais notez que ce n'est pas de type coffre-fort; c'est à dire, le compilateur ne peut que partiellement vérifier la validité de votre code en ce qui concerne les valeurs de type
object
.Sinon, vous pouvez essayer un plus orienté objet solution
Ensuite déclarer votre dictionnaire principal avec
OriginalL'auteur Olivier Jacot-Descombes
Vous perdrez forte de types et de tous leurs avantages.
Pouvez-vous ne pas créer une nouvelle classe qui a un Dictionnaire de la propriété et ajouter vos autres données:
OriginalL'auteur vc 74
Non, il n'y a pas de problème. Si vous avez besoin de tapez la valeur que
Dictionary<string, string>
simplement le jeter et vous aurez cette résolus.OriginalL'auteur Matías Fidemraizer
Bien, votre code sera moins typesafe et vous aurez besoin du runtime vérifications de type et de type de moulages, mais sinon, vous pouvez utiliser
object
comme un dictionnaire de type de la valeur et de stocker tous les types là.OriginalL'auteur wRAR
Vous devrez payer une pénalité de performances lorsque vous unbox la
System.Object
, mais à part ça, il n'y a pas un problème avec votre approche autre que excessive de casting pour les indexeurs (en raison de la faiblesse de frappe).Vous pouvez envisager d'utiliser un Système.Tuple si vous êtes en utilisant .NET 4.
OriginalL'auteur SliverNinja - MSFT