Как использовать 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 будет лучшим решением, так как вы можете связать импорт / экспорт в интерфейсе.