Я хотел бы создать экземпляр объекта, который я могу использовать в другом месте в своем классе, не пройдя больше отражения, если я могу ему помочь.Вызов метода из вызываемого объекта
После создания объекта (через активатор или конструкторИнформация, я прочитал аргументы для обоих, но использовал активатор как более короткий, например), я должен использовать его, но это не работает.
Например:
Server instance;
public void A()
{
Assembly loaded = Assembly.LoadFrom("C:\Program Files\test2\Shared.dll");
serverType = loaded.GetType("Server");
object obj = Activator.CreateInstance(serverType, new [] { "test" });
instance = (Server)obj;
}
public void B()
{
instance.startServer();
}
Это дает исключение:
System.InvalidCastException: [A]Server cannot be cast to [B]Server.
Type A originates from 'Shared, Version=0.0.0.0, Culture=neutral,
PublicKeyToken=2a032d22a4688508' in the context
'LoadFrom' at location 'C:\Program Files\test1\Shared.dll'.
Type B originates from 'Shared, Version=0.0.0.0, Culture=neutral,
PublicKeyToken=2a032d22a4688508' in the context 'Default' at location .
'C:\Program Files\test2\Shared.dll'
Я понимаю причину исключения брошенного, но есть способ бросить экземпляр в качестве сервера из тип, который я хочу, то есть динамически загруженную dll?
«Сервер» в вашем коде отличается от «Server» от 'test.dll'? или оба указывают на один и тот же тип? –
К сожалению, я пытался сократить код, отредактировал для удаления test.dll и теперь пытается загрузить с нужного места – user1584120
Я думаю, вы не поняли мой вопрос. Сервер в вашем коде отличается от «Server» от Shared.dll? или оба указывают на один и тот же тип? –