我有一段反彙編代碼不能很好地工作的解碼代碼。我不知道如何使它有效,因爲我不知道如何使用MethodHandles等......我認爲這對於反思專家來說應該是一個非常簡單的任務,因爲(據我可以推斷)唯一的事情需要發生的是'從接口獲取方法句柄'?我對麼?從接口獲取RuntimeMethodHandle?
下面的參數錯誤.. IProductRepositoryItem.Code應該是一個RuntimeMethodHandle
(MethodInfo) MethodBase.GetMethodFromHandle(IProductRepositoryItem.Code));
全碼:
ParameterExpression parameterExpression = Expression.Parameter(typeof (T), "i");
// ISSUE: method reference
Expression<Func<T, object>> property =
Expression.Lambda<Func<T, object>>(
(Expression) Expression.Property(
(Expression) Expression.Convert((Expression) parameterExpression, typeof (IProductRepositoryItem)),
(MethodInfo) MethodBase.GetMethodFromHandle(IProductRepositoryItem.Code)),
new ParameterExpression[1] {
parameterExpression
});
string key = entityHelper.GetField<T>(property);
我從來沒有在C#中使用'RuntimeMethodHandle'。如果你正在編寫一個編譯器,這是很常見的。 – leppie
標籤[methodhandle]的所有其他問題似乎都是關於Java特性的。是否有一個C#相關標籤更適合這個問題? (我不知道C#,所以我會留給你(任何人)去改變它,如果有必要的話。) –