Создание объекта в другом домене

131
30 июня 2022, 18:40

Изучаю C# по книге Рихтера и застопорился на создании объекта в соседнем домене. Копипаст кода из книги не выполняется. Вот пример без лишней мишуры:

public class myMarshallableClass : MarshalByRefObject { }
static void Main()
{
AppDomain d = AppDomain.CreateDomain("Second domain");
myMarshallableClass o = (myMarshallableClass)d.CreateInstanceAndUnwrap(Assembly.GetEntryAssembly().FullName, "myMarshallableClass");
}

При попытке сздания объекта выкидывает System.TypeLoadException: "Не удалось загрузить тип "myMarshallableClass" из сборки "MyConsoleApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"." Мол не может загрузить тип из основной сборки.. Видимо я что-то делаю не так...

Answer 1

Судя по документации вам нужно указывать Fully Qualified Name, т.е. укаваться namespace, а также если класс вложен в другой класс.

The fully qualified name of the requested type, including the namespace but not the assembly, as returned by the FullName property.

Например:

AppDomain d = AppDomain.CreateDomain("Second domain");
myMarshallableClass o = (myMarshallableClass)d.CreateInstanceAndUnwrap(Assembly.GetEntryAssembly().FullName, "MyConsoleApp.myMarshallableClass");

Должно работать, если у вас класс myMarshallableClass лежит в пространстве имен MyConsoleApp.

Код приведенный в книге будет работать, если вы не поместите его в namespace, просто создадите на самом "верхнем уровне" файла.

READ ALSO
Почему не работает e.preventDefault?

Почему не работает e.preventDefault?

Подскажите пожалуйста, почему в ei11 форма делает перезагрузку, хотя прописал preventDefault, только в ie такой баг:

210
подскажите почему closest не работает в ie11

подскажите почему closest не работает в ie11

подскажите в чем может быть ошибка, в ie11 только в одном месте не отработывает полифил для closest? SCRIPT5007: Не удалось получить свойство "matches"...

165
Как очистить инпут типа file

Как очистить инпут типа file

есть форма в которой пользможет добавлять изображения и при необходимости удалять его

234
Как поместить arguments в call

Как поместить arguments в call

Я хочу запускать функцию не теряя контекст, но при этом имея возможность не привязываться к количеству аргументов

223