Как использовать Activator.CreateInstance для создания экземпляра внешнего класса?

У меня есть приложение, в котором я хочу создать экземпляр класса, который полностью находится за пределами приложения и, возможно, позднее будет написан третьей стороной. Таким образом, класс не может быть известен, но интерфейсы в классе известны. Поэтому я хочу использовать позднюю привязку.

В моем коде (VB.NET) у меня есть следующее:

Dim a As Object
a = Activator.CreateInstance("MyNameSpace.CustomClass", "")
MsgBox(a.Name)

Я получаю исключение во второй строке: Could not load file or assembly 'MyNameSpace.CustomClass' or one of its dependencies. The system cannot find the file specified. даже если сборка находится в той же папке, что и исполняемый файл. Я не могу использовать Type.GetType(), потому что тип не известен вызывающей сборке.

1 ответ

Решение

Вам нужен метод CreateInstanceFrom.

    var typeReference = Activator.CreateInstanceFrom(assemblyPath, 
                                                       fullyQualifiedClassName);

Но для меня MEF будет лучшим решением, так как вы можете связать импорт / экспорт в интерфейсе.

Другие вопросы по тегам