Доступ к параметрам класса через базовый
Нужно обратиться к переменным классов, которые находятся в DLL. Класс заранее не известен, но известен базовый. Поэтому экземпляры этих классов создаются как базовые. Базовый разумеется не видит параметров производного. Как получить к ним доступ??? :???:
1) Эта функция создаёт объект типа T, конструктор принимает аргументы в args.
public static T CreateInstance<T>(params object[] args)
{
return (T)typeof(T).InvokeMember("this", System.Reflection.BindingFlags.CreateInstance, null, typeof(T), args);
}
2) Эта функция запускает нужную функцию. Если нужно игнорировать регистр буквы в названии функции, то используем bind-флаг System.Reflection.BindingFlags.IgnoreCase. В Instance нужно передать экземпляр класса, из которого нужно функцию запустить. В name передаём имя функции, которую нужно запустить, в args - аргументы
public T Call<T>(object Instance,string name, params object[] args)
{
return (T)Instance.GetType().InvokeMember(name, System.Reflection.BindingFlags.InvokeMethod , null, this, args);
}
3) При помощи функции GetType, которая наследуется всеми классами, можно получить дсотуп даже к private-членам класса, а затем получить их RuntimeHandle и делать с ними всё что хочешь.
Вот тебе ещё исходник, там всё есть
3A3-968M, благодарю за популярный ответ.