Я читал, что должен создавать и повторно использовать делегаты, чтобы получить значение свойства объекта.
Я использую этот код для создания Делегата
var objParm = Expression.Parameter(property.DeclaringType, "o");
Type delegateType = typeof(Func<,>).MakeGenericType(property.DeclaringType, property.PropertyType);
var lambda = Expression.Lambda(delegateType, Expression.Property(objParm, property.Name), objParm);
return lambda.Compile()
Теперь я нахожу способ использовать делегата только при вызове «DynamicInvoke».
Теперь я хочу изменить вызов на «вызывать» из соображений производительности.
Я пытался
Delegate.Method.Invoke(invokedObject, null);
Но после звонка я получаю исключение
MethodInfo must be a RuntimeMethodInfo.
У меня есть класс кэша для каждого свойства, где я могу хранить динамически созданный делегат.
Что мне делать, чтобы я мог использовать "нормальные" вызовы?
Большое спасибо.