J'utilise le code suivant pour récupérer des membres nommés d'un type anonyme. Y a-t-il un moyen de convertir le code suivant pour utiliser une expression lambda, ou du moins permettre au code appelant d'utiliser un lamda, même si je dois utiliser une chaîne en profondeur?Comment puis-je éviter d'utiliser un nom de membre de chaîne pour obtenir un membre d'un type anonyme?
private T GetAnonymousTypeMember<T>(object anonymousType, string memberName) where T: class
{
var anonTypesType = anonymousType.GetType();
var propInfo = anonTypesType.GetProperty(memberName);
return propInfo.GetValue(anonymousType, null) as T;
}
AJOUTÉE: Voici comment anonymousType
arrive. La méthode GetAnonymousTypeMember
est privé à une classe dont la méthode publique seulement est déclarée comme suit:
PublishNotification public void (NotificationTriggers déclenchent, templateParameters objet)
J'appelle cette méthode:
PublishNotification(NotificationTriggers.RequestCreated, new {NewJobCard = model});
Ce new {NewJobCard = model}
est ce qui est passé à GetAnonymousTypeMember
comme anonymousType
.
Que voulez-vous utiliser à la place? Y a-t-il une autre façon de faire référence à un membre? –
Quelque chose comme GetAnonTypeMember (m => m.Person) – ProfK
Pourquoi ne pas simplement utiliser m.Person? Pourquoi le besoin de faire cela dans une méthode, alors que la seule chose que ferait la méthode est d'appeler l'expression lambda? – Guffa