2010-01-22 5 views
2

Nous avons besoin de fournir des descriptions conviviales pour les types. Nous avons créé un fichier de ressources qui mappe le type à une description.Conversion de chaînes dans un arbre d'expression?

Le nom complet de l'instance avec les points remplacés par des traits de soulignement est utilisé comme clé. La description est une chaîne et contient des modèles qui font référence à la propriété dans l'instance.

Lorsque nous obtenons une instance, nous obtenons son type, obtenons la clé et l'utilisons pour trouver la valeur de la ressource. Utilisez ensuite regex pour extraire ces propriétés de modèle. Ensuite, utilisez la réflexion pour obtenir la valeur de la propriété.

par ex. L'instance peut être Adresse la clé serait MyNameSpace_MyPublicTypes_Address (prononcez le nom complet is'MyNameSpace.MyPublicTypes.Address «)

La description peut être l'utilisateur reste dans {} State.City dans {pays} '- State et Country sont des propriétés de la classe Address. L'Etat a une propriété Ville.

Est-il possible d'avoir quelque chose comme 'obj => obj.State.City' ou 'obj => obj.Country'? ou une sorte d'expression? J'utilise obj car c'est l'instance reflétée.

Appréciez toute aide. Je ne sais pas si cette question a déjà été posée.

+1

avez-vous vu cette question? http://stackoverflow.com/questions/159017/named-string-formatting-in-c – Jimmy

Répondre

1

C'est à peu près ce que fait la bibliothèque dynamique LINQ (l'un des exemples .NET 3.5). La source est all available, ou pour une utilisation see here. Vous devriez être capable de tracer le code qui analyse les chaînes en Expression s. Bien sûr, il n'est pas difficile de diviser sur . et de l'assembler manuellement; J'ai une implémentation OrderBy dynamique here qui fait cela.

+0

Merci Marc .J'ai pas encore vu la bibliothèque dynamique LINQ. Si cela m'aide à trouver des propriétés sur des objets réfléchis, ce serait génial !! – AlwaysAProgrammer

Questions connexes