2010-09-09 1 views
2

Я загружаю тип из внешней сборки и хочу создать экземпляр типа. Однако этот тип/класс настроен для интродукции конструктора объектами, которые в настоящее время управляются/связаны Ninject. Как я могу использовать Ninject, чтобы создать экземпляр этого типа и ввести любые зависимости конструктора?Как использовать Ninject в инжекции конструктора типа во внешней сборке

Ниже приведено, как я получаю этот тип.

Assembly myAssembly = Assembly.LoadFrom("MyAssembly.dll"); 
Type type = myAssembly.GetType("IMyType"); 

ответ

2

Предполагая, что вы создали Kernel, вы должны быть в состоянии создать и она решена с помощью:

kernel.Get(type) 

.... потом я прочитал вопрос .... Предполагая MyAssembly. длл имеет реализацию IMyType, что вам нужно (в основной сборке): -

kernel.Load("MyAssembly.dll") 

И в вашей динамически загружаемой сборке: -

И не забудьте проверить, является ли MEF ответом здесь, так как вы не хотите писать записи явного управления подключением и/или логикой обнаружения, если вы можете помочь (но если вы просто делаете простые вещи и только делают Assembly.LoadFrom() для того, чтобы задать вопрос, вы, вероятно, все еще находитесь в сладком местечке Ниндекса.

То же самое, если вам действительно нужно разрешить интерфейс через Assembly.GetType(), вероятно, вы должны использовать что-то вроде dynamic, чтобы сделать последнее связывание, которое вам, вероятно, придется делать (и, прежде чем вы это знаете, вы должны использовать динамический язык или хостинг язык scriopting)

 Смежные вопросы

  • Нет связанных вопросов^_^