Не удается загрузить тип из сборки - PullRequest
0 голосов
/ 02 марта 2019

Я изучаю этот код из MSDN MarshalByRefObject Я не мог понять, почему это вызывает исключение.Я думаю, может ли тип Worker находится в той же сборке, что и класс Program?Нужно ли устанавливать эту сборку в GAC, хотя я запускаю это в режиме отладки в редакторе Visual Studio 2017.У меня нет четкого понимания, как работать со сборкой.

using System;
using System.Reflection;

namespace AppDomainMarshalByRefObject
{

    public class Program
    {
        public static void Main(string[] args)
        {
            Worker localWorker = new Worker();
            localWorker.PrintDomain();

            AppDomain ad = AppDomain.CreateDomain("New domain");
            Worker remoteWokrer = (Worker)ad.CreateInstanceAndUnwrap(typeof(Worker).Assembly.FullName, "Worker");

            remoteWokrer.PrintDomain();
            Console.ReadKey();
        }
    }

    public class Worker : MarshalByRefObject
    {
        public void PrintDomain()
        {
            Console.WriteLine("Object is executing in AppDomain \"{0}\"",
            AppDomain.CurrentDomain.FriendlyName);
        }
    }
}

1 Ответ

0 голосов
/ 02 марта 2019

Вы создаете неполный typename.Добавьте это к своему коду:

public static void Main(string[] args)
    {
        ...

        var typeName = typeof(Worker);

        AppDomain ad = AppDomain.CreateDomain("New domain");
        Worker remoteWokrer = (Worker)ad.CreateInstanceAndUnwrap(typeof(Worker).Assembly.FullName, typeName.FullName);

        ...
    }
...