Paramètre de type anonyme nom de la propriété
Disons que j'ai le morceau de code suivant:
string SomeConst = "OtherName";
var persons = GetPersons(); //returns list of Person
var q = persons.Select(p =>
new
{
SomeConst = p.Name
});
Fondamentalement, je m'attends à avoir dans q séquence de type anonyme avec la propriété
nommé OtherName et pas SomeConst.
Comment puis-je parvenir à un tel comportement?
Pourquoi ne pouvez-vous pas simplement utiliser
C'est la solution la plus évidente et c'est la façon dont il est mis en œuvre maintenant, je suis à la recherche pour plus de solution générique maintenant
si vous avez mis en œuvre il alors quel est le problème?
Eh bien, si ça fait mal quand vous frappez votre pied, pourquoi ne pas arrêter de frapper votre pied?
serait const string SomeConst = "OtherName" faire l'affaire?
OtherName
en place de SomeConst
?C'est la solution la plus évidente et c'est la façon dont il est mis en œuvre maintenant, je suis à la recherche pour plus de solution générique maintenant
si vous avez mis en œuvre il alors quel est le problème?
Eh bien, si ça fait mal quand vous frappez votre pied, pourquoi ne pas arrêter de frapper votre pied?
serait const string SomeConst = "OtherName" faire l'affaire?
OriginalL'auteur user759141 | 2011-05-18
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas le faire. Les noms des propriétés d'un type anonyme doit être connue au moment de la compilation. Exactement pourquoi avez-vous besoin de faire cela?
Vous pouvez obtenir un effet similaire en créant une séquence de dictionnaires à la place des objets anonymes:
Il n'y a pas une telle chose comme une "constante"... Si c'est une constante, vous pouvez utiliser le nom réel directement lorsque vous créez l'objet anonyme. Si c'est une variable, il n'est pas possible, mais vous pouvez le faire avec un dictionnaire comme expliqué dans ma réponse
Oui, la valeur est connue au moment de la compilation, mais c'est une chaîne, pas un identificateur...
Donc si je change la première ligne de const string SomeConst
Si vous utilisez le même type anonyme dans plusieurs endroits, vous devez créer un type nommé
OriginalL'auteur Thomas Levesque
La seule façon que je suis conscient de vous peut ajouter dynamiquement des propriétés dont le nom est inconnu au moment de la compilation est la ExpandoObject :
Mais je ne vois vraiment pas l'intérêt à le faire une telle chose. Il est le plus probablement une très mauvaise conception/idée de le faire. Vous allez sans aucun doute créer plus maladroit, illisible et unmaintenable code que vous serez à même de résoudre quoi que ce soit...
OriginalL'auteur Ssithra