一部のリフレクション コードではうまく機能しない逆アセンブル コードがあります。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);