У меня есть фрагмент дизассемблированного кода, который не очень хорошо работал с некоторым кодом отражения. Я понятия не имею, как сделать его действительным, поскольку я не знаю, как работать с MethodHandles и т. Д. ... Я думаю, что это должно быть довольно простой задачей для гуру отражения, потому что (насколько я могу вычесть) единственная вещь что должно произойти, это «получение дескриптора метода из интерфейса»? Я прав?
Следующий параметр неверен. 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);