我有一個對象類型的參數。任何東西都可以在該參數上設置。我需要在該參數中找到具有特定名稱的屬性。如果它當然存在。使用正確類型調用委託
我需要的是這樣的(僞代碼):
ParameterExpression arg = Expression.Parameter(parameter.GetType(), "x");
Expression expr = Expression.Property(arg, "Info");
var propertyResolver = Expression.Lambda<Func<parameter.GetType, object>>(expr, arg).Compile();
已經有方法`Expression.Lambda(類型,表達,...)
但返回System.Delegate回對我而言,我需要Func <>。
我該怎麼做才能做到這一點?
在此先感謝你們。
這裏是一個演示:
class Program
{
private Func<object, object> func;
static void Main(string[] args)
{
// lets say in this case the parameter is person but it could be anything
Person parameter = new Person();
ParameterExpression arg = Expression.Parameter(parameter.GetType(), "x");
Expression expr = Expression.Property(arg, "Name");
var func = Expression.Lambda<Func<parameter.GetType, object>>(expr, arg).Compile();
}
}
class Person
{
public string Name { get; set; }
}
我創造了我的功能我必須把它至少1000倍在對內部的另一種方法循環後因此DynamicInvoke是不是一個不錯的選擇。它太慢了。我嘗試了一下。
* *你的表現限制是什麼?你的方法是否可以變成通用的,這樣''parameter'的類型可以作爲類型參數來使用?何時以及如何打電話給代表? (大概不只是''參數'...) –
該方法本身必須實現,因爲它從一個接口,所以我不能改變任何東西,但我可以調用其他方法。這裏的表現非常重要。因此我需要在本地存儲創建的功能。 –
請提供所有這些信息 - 以及您可以在問題*中告訴我們的任何其他信息。我們不應該一次就把它從你身上拖出來。 –