Динамически вызывать получатель свойства - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь динамически получить значение get свойства, однако я получил исключение:

System.Reflection.TargetParameterCountException: 'Несоответствие количества параметров.'

object result = null;

....

MethodInfo getMethod;
if ((getMethod = p.GetGetMethod(true)) != null)
{
    var openGetterType = typeof(Func<,>);
    var concreteGetterType = openGetterType.MakeGenericType(typeResult, p.PropertyType);
    var getterInvocation = Delegate.CreateDelegate(concreteGetterType, null, getMethod);

    var value = getterInvocation.DynamicInvoke(); //exception thrown here
    if (value != null)
    {
        p.SetValue(result, value, null);
    }
}

Примечания:

  • Я стараюсь избегать использования p.GetValue(), потому что это медленно.
  • Когда я пытался вызвать геттер, я подумал, что нет необходимости передавать какое-либо значение в getterInvocation.DynamicInvoke()

1 Ответ

0 голосов
/ 29 апреля 2020

Я решаю проблему.

Мне нужно передать исходный объект в DynamicInvoke.

var value = getterInvocation.DynamicInvoke(source)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...