Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Доступ к параметрам класса через базовый

2.2K
06 апреля 2006 года
micle77
50 / / 14.01.2005
Нужно обратиться к переменным классов, которые находятся в DLL. Класс заранее не известен, но известен базовый. Поэтому экземпляры этих классов создаются как базовые. Базовый разумеется не видит параметров производного. Как получить к ним доступ??? :???:
273
08 апреля 2006 года
3A3-968M
1.2K / / 22.12.2005
На помощь приходит рефлекция. Привожу процедуры, при помощи которых можно обращатся к полям, свойствам, функциям и даже конструкторам. Не все приведённые мною фишки документированы в MSDN:
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 и делать с ними всё что хочешь.
Вот тебе ещё исходник, там всё есть
2.2K
14 апреля 2006 года
micle77
50 / / 14.01.2005
3A3-968M, благодарю за популярный ответ.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог