J'ai créé cette expression dans un code:expression `t => (t.SomeProperty As Object)` fait référence à une méthode, pas une propriété
t => (t.SomeProperty As Object)
et maintenant je suis en train d'obtenir la propriété -nom (SomeProperty
) par ce petit extrait (obtenu à partir d'Internet depuis longtemps moi):
public static PropertyInfo GetPropertyInfo<TSource, TProperty>
(TSource source, Expression<Func<TSource, TProperty>> propertyLambda) {
var type = typeof(TSource);
var member = propertyLambda.Body as MemberExpression;
if (member == null)
throw new ArgumentException($"Expression '{propertyLambda}' refers to a method, not a property.");
var propInfo = member.Member as PropertyInfo;
if (propInfo == null)
throw new ArgumentException($"Expression '{propertyLambda}' refers to a field, not a property.");
if (type != propInfo.ReflectedType && !type.IsSubclassOf(propInfo.ReflectedType))
throw new ArgumentException($"Expresion '{propertyLambda}' refers to a property that is not from type {type}.");
return propInfo;
}
Mais comme vous le savez, propertyLambda.Body as MemberExpression
est toujours nulle, parce que ceci: t => (t.Some1 As Object)
n'est pas une propriété se réfèrent. Est-il possible d'obtenir le nom de la propriété dans ce cas?