Ответ 1
Попробуйте Activator.CreateInstance.
Используя отражение, мне нужно исследовать пользовательскую DLL и создать в нем объект класса.
Каков простой способ сделать это?
Попробуйте Activator.CreateInstance.
System.Reflection.Assembly
- это класс, который вы хотите использовать. Он содержит много методов для итерации по типам, содержащимся в пользовательской DLL. Вы можете проходить через каждый класс, возможно, посмотреть, наследуется ли он от определенного интерфейса и т.д.
http://msdn.microsoft.com/en-us/library/system.reflection.assembly_members.aspx
Изучите метод Assembly.GetTypes()
для получения списка типов или Assembly.GetExportedTypes()
только для публичных.
Вы можете создать экземпляр класса из объекта Type с помощью Activator.CreateInstance, чтобы получить все типы в dll, вы можете использовать Assembly.GetTypes
Взгляните на эти ссылки:
http://www.java2s.com/Code/CSharp/Development-Class/Createanobjectusingreflection.htm
http://msdn.microsoft.com/en-us/library/k3a58006.aspx
В основном вы используете рефлексию для загрузки сборки, а затем найдите интересующий вас тип. После того, как у вас есть этот тип, вы можете попросить найти его конструкторы или другие методы/свойства. Когда у вас есть конструктор, вы можете вызвать его. Легко!
Как уже было сказано, вам нужно вытолкнуть пространство имен System.Reflection.
Если вы заранее знаете местоположение/имя DLL, которое хотите загрузить, вам необходимо выполнить итерацию через Assembly.GetTypes().
В Pseudocode он будет выглядеть примерно так:
Создание и сборка объекта.
Итерации по всем типам, содержащимся в сборке.
Как только вы найдете тот, который вы ищете, вызовите его (CreateInstance)...
Используйте это с умом.
;)
У меня есть много кода Reflection, если вы хотите взглянуть вокруг, но задача действительно проста, и есть, по крайней мере, дюжина статей с образцами в дикой природе. (Aka Google). Несмотря на это, MSDN - ваш друг для Reflection Reference.