Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 3
Регистрация: 31.05.2012
Сообщений: 81
1

Получение типа класса по строковому названию из другой сборки

10.07.2015, 13:22. Показов 3212. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Интересуюсь получением типа класса по строковому названию, находящимся в другой сборке.
Судя по описанию перегрузки метода GetType - должен применяться делегат:
https://msdn.microsoft.com/en-... .110).aspx

Попытки вида:
C#
1
2
3
4
5
 Func<AssemblyName, Assembly> assemblyResolver = name => {
                           return Assembly.Load("DeloDoc.Api");
                        };
 
 Type classIs = Type.GetType("DeloDoc.Api.Entities.DOCGROUP_Entity", assemblyResolver, null, false);
к успеху не привели. Какое верное применение этой перегрузки метода?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2015, 13:22
Ответы с готовыми решениями:

RTTI. Создание объекта по строковому названию класса.
Всем добрый субботний день! Пытаюсь выполнить следующее: procedure...

Получение класса по названию в строке
Здраствуйте! программа должна динамически создавать элементы управления на форме. Но, какой элемент...

Как добавить номер сборки к названию сборки?
Помогите, пожалуйста! Нужно, что бы при компиляции (VS-10) к названию ехе-файла автоматически...

Не работает GetType для класса из другой сборки
У меня тут еще путаница с namespace'ами... Есть сборка Host в namespace Host. Потом добавил...

6
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
10.07.2015, 14:26 2
Лучший ответ Сообщение было отмечено Ksenya23 как решение

Решение

Ksenya23, я так этим пользовался:
C#
1
2
3
4
5
6
// Загрузим сборку.
Assembly dllAssembly = Assembly.LoadFrom(dllFileFullName);
// Определим тип для создания объекта по его имени.
Type type = dllAssembly.GetType("MyType");
// Создадим объект нужного нам типа.
SMSAdapter.IAdapterSMSDelivery obj = (MyType)Activator.CreateInstance(type);
0
0 / 0 / 3
Регистрация: 31.05.2012
Сообщений: 81
10.07.2015, 15:05  [ТС] 3
спасибо за ответ, я реализовала почти также:
C#
1
Type f = Assembly.Load("x").GetType("y");
а для той реализации требовалось - полное имя с версией и прочее, цитата:
C#
1
Type.GetType - метод (String, Func<AssemblyName, Assembly>, Func<Assembly, String, Boolean, Type>, Boolean, Boolean)
- If typeName is not an assembly-qualified name, assembly resolution is skipped

но похоже большая проблема впереди:
есть обобщенный метод, который принимает мой тип:
C#
1
GetClassifByDUE<string>()
как в определение типа подставить полученную переменную, или каким способом разрешить?
0
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
10.07.2015, 15:50 4
Ksenya23, вот здесь есть и пример проблемы, и пример её решения: Рефлексия обобщенных типов
0
0 / 0 / 3
Регистрация: 31.05.2012
Сообщений: 81
10.07.2015, 15:54  [ТС] 5
Да, нахожу по типу:
https://msdn.microsoft.com/que... p)&rd=true
и бьюсь над ошибками вывода результата =)
0
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
10.07.2015, 15:54 6
Ещё по поводу рефлексии обобщённых типов вот здесь: >>Ссылка<< и об обобщённых методах там же: >>Ссылка<<
1
0 / 0 / 3
Регистрация: 31.05.2012
Сообщений: 81
10.07.2015, 17:13  [ТС] 7
По ходу работы появился интересный вопрос: можно ли с помощью рефлексии вызвать единожды метод обобщенного типа, который принимает на вход - отложенный метод. Без двойного выполнения каждого метода?
Пример более раннего связывания, реализуемый сейчас:
C#
1
 DUE_DOCGROUP.Text = Saved.ClassifNames(GetClassifByDUE<DOCGROUP_Entity>(DUE_DOCGROUP.Value));
Методы: ClassifNames<T> и GetClassifByDUE<T>.
0
10.07.2015, 17:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.07.2015, 17:13
Помогаю со студенческими работами здесь

Получение значения из одного класса в другой
Например у меня есть класс ключ. Если я нажимаю на ключ то объект удаляется и значение переменной...

Следить за вызовом методов сборки из другой сборки
Подтолкните, в каком направлении копать. Хочу написать программку, которая могла бы следить и...

Запуск из сборки другой сборки(exe)
У меня есть одна большая программа(windows forms) и вторая поменьше(win forms). По нажатию кнопки...

Как работает преобразование из типа класса в другой тип?
Есть класс Test1 и наследуемый от него класс Test2. Test1 x = new Test2(); Типу какого класса...

Как скопировать все свойства из одного класса в другой класс такого же типа
Здравствуйте. Представим, что есть класс со множеством свойств. Как скопировать все свойства из...

Замена файла explorer.exe из одной сборки (версии) Win XP файлом из другой сборки (версии)
какие последствия могут быть, если я заменю файл проводника windows explorer.exe одной сборки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru