Правильное использование Отражения и привязки флагов

Я хочу изменить приведенный ниже код, чтобы иметь возможность использовать приватный метод

        //use reflection to Load the data
    var method =
                    typeof(MemberDataFactory)
                    .GetMethod("LoadData")
                    .MakeGenericMethod(new [] { data.GetType() })
                    .Invoke(this, null);

Я попытался следующее без удачи:

        //use reflection to Load the data
    var method =
                    typeof(MemberDataFactory)
                    .GetMethod("LoadData")
                    .MakeGenericMethod(new [] { data.GetType() })
                    .Invoke(this, BindingFlags.Instance | BindingFlags.NonPublic, null , null, null);

И что такое "var" с точки зрения этого кода? Я бы предпочел указывать его тип вместо использования var.

Спасибо!

1 ответ

Решение

Вы хотите использовать эту перегрузку Type.GetMethod(), где вы передаете свои флаги привязки. По умолчанию .GetMethod(string) ищет только общедоступные методы, поэтому возвращает нуль, отсюда и исключение нулевой ссылки.

Ваш код должен быть примерно таким:

var method =
        typeof(MemberDataFactory)
        .GetMethod("LoadData", BindingFlags.Instance | BindingFlags.NonPublic) // binding flags go here
        ...
Другие вопросы по тегам