我想使用由PropertyType返回的類型來創建一個類型化的函數。我發現這種類似的 using type returned by Type.GetType() in c# 但這提到了如何創建一個列表,但沒有提到我們如何創建一個Func <>。請幫助我。如何動態使用PropertyType反射屬性來創建相應類型的函數<>?
僞代碼:
PropertyInfo inf = typeof(SomeClass).GetProperty("PropertyName");
Type T=inf.PropertyType;
Expression<Func<SomeClass,T>> le = GetPropertyOrFieldByName<SomeClass,T>("PropertyName");
static Expression<Func<TSource, TResult>> GetPropertyOrFieldByName<TSource,TResult>(string propertyOrFieldName)
{
ParameterExpression item = Expression.Parameter(typeof(TSource), "expr");MemberExpression prop = LambdaExpression.PropertyOrField(item, propertyOrFieldName);
var expr = Expression.Lambda<Func<TSource, TResult>>(prop, new ParameterExpression[] { item });
expr.Compile();
return expr;
}
你可以顯示一些你想達到的僞代碼嗎?你的問題有點含糊。 – Steven 2010-05-05 18:35:20
你想創建委託的實例還是什麼? – Andrey 2010-05-05 18:35:51
對不起,如果它有點模糊...這是一些代碼..這是我想做的事情... PropertyInfo inf = typeof(SomeClass).GetProperty(「PropertyName」); 類型T = inf.PropertyType; 表達式> le = GetPropertyOrFieldByName (「PropertyName」); –
Vishal
2010-05-05 18:37:36