Подскажите как справиться.
Ситуация:
1. Сервер (простейший) + dll — на с классом (клас от MBR)
2. Клиент (соответственно тоже простейший) на нем не должно быть ни сборки с требуемым классом ни интерфейса. Знаем только имя класса.
Необходимо создать client activated экзепляр класса.
Здравствуйте, uss, Вы писали:
uss>Подскажите как справиться. uss>Ситуация: uss>1. Сервер (простейший) + dll — на с классом (клас от MBR) uss>2. Клиент (соответственно тоже простейший) на нем не должно быть ни сборки с требуемым классом ни интерфейса. Знаем только имя класса.
uss>Необходимо создать client activated экзепляр класса.
uss>Заранее спасибо!
Gets the Type object with the specified name in the assembly instance.
H>Gets the Type object with the specified name in the assembly instance.
H>
H>public virtual Type GetType(string name);
H>
И получиш null если имя не полное, а если полное то получиш вызов делегата подписанного на AppDomain.AssemblyResolve текущего домена.
Так что придеться нв сервер лезть за сборкой типов.
Здравствуйте, migel, Вы писали:
M>Здравствуйте, hugo, Вы писали:
H>>
H>>Gets the Type object with the specified name in the assembly instance.
H>>
H>>public virtual Type GetType(string name);
H>>
M>И получиш null если имя не полное, а если полное то получиш вызов делегата подписанного на AppDomain.AssemblyResolve текущего домена. M>Так что придеться нв сервер лезть за сборкой типов.
Вообще-то
public virtual Type GetType(string name);
это из класса Assembly, причем, не static, поэтому вполне естественно, что нужно иметь ссылку на нужную сборку.
Не имею ее, не получишь и null-а.
Я имел в виду, что в таком случае можно создать объект фабрики, которму передавать имя класса,
а объект уже создавать на сервере с использованием GetType.
Последовал выше выше написанным советам.
Получил следующее:
На сервере есть сборка с классом
public class GetRemoteType : MarshalByRefObject,IGetRemoteType
{
public Type GetRemoteTypeByName(string typeName)
{
Assembly ass = Assembly.Load("TestObject");
Type t = ass.GetType(typeName);
return t;
}
Здравствуйте, uss, Вы писали:
uss>Здравствуйте, AndrewVK, Вы писали:
AVK>>Низзя. Без метаданных создать объект ты конечно сможешь, но вот вызвать что либо у него ты сможешь только путем весьма хитрых извращений.
uss>Что извращаться придется — я уже понял. Но как?
Забить на выполнение методов через рефлекшн, забацать сервер выполняющий дествия что-то типа