Resolving a property’s name and creating delegates for its get and set property accessors involves unwinding of the Lambda expression and retrieving the PropertyInfo
instance. In the sample code, this is done using the custom PropertyUtility.GetPropertyInfo
method, which retrieves the PropertyInfo
instance from the expression’s Member
property, as shown:
public static PropertyInfo GetPropertyInfo<T>(Expression<Func<T>> expression)
{
var memberExpression = expression.Body as MemberExpression;
if (memberExpression == null)
{
throw new ArgumentException(
"MemberExpression expected.", "expression");
}
if (memberExpression.Member == null)
{
throw new ArgumentException("Member should not be null.");
}
if (memberExpression.Member.MemberType != MemberTypes.Property)
{
throw new ArgumentException("Property expected.", "expression");
}
PropertyInfo propertyInfo = (PropertyInfo)memberExpression.Member;
return propertyInfo;
}
3.144.18.253