Autofac Named/Keyed резолвинг и вложенные зависимости

417
02 января 2018, 12:55

При попытке сделать резолвинг по имени вылетает ошибка 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on type 'ConsoleApplication1.Program+MainClassOlolo' can be invoked with the available services and parameters: Cannot resolve parameter 'INamed named' of constructor 'Void .ctor(INamed)'."

При резолвинге Named/Keyed вложенные зависимости также будут резолвиться с использованием Name/Key или же это распространяется непосредственно на сам класс, который резолвится?

class Program
    {
        static void Main(string[] args)
        {
            var container = new ContainerBuilder();
            container.RegisterType<NamedB>().Named<INamed>("B");
            container.RegisterType<NamedA>().Named<INamed>("A");
            container.RegisterType<MainClassOne>().Named<MainClassOne>("A");
            container.RegisterType<MainClassTwo>().Named<MainClassTwo>("B");
            var di = container.Build();
            var a = di.ResolveNamed<MainClassTwo>("B");
            var a2 = di.ResolveNamed<MainClassOne>("A");
        }
        public class MainClassOne
        {
            public MainClassOne(INamed named)
            {
                Console.WriteLine("MainClassBla = " + named.Name);
            }
        }
        public class MainClassTwo
        {
            public MainClassTwo(INamed named)
            {
                Console.WriteLine("MainClassOlolo = " + named.Name);
            }
        }
        public interface INamed
        {
           string Name { get; set; }
        }
        public class NamedA : INamed
        {
            public string Name
            {
                get { return "A"; }
                set { }
            }
        }
        public class NamedB : INamed
        {
            public string Name
            {
                get { return "B"; }
                set { }
            }
        }
    }
READ ALSO
Входная строка имеет неверный формат C#

Входная строка имеет неверный формат C#

combobox как вы знаете требует string, а MessagesGetChat - long

317
Как правильно использовать api Temp-mail

Как правильно использовать api Temp-mail

Подскажите пожалуйста, какие значения куда надо вбивать что бы использовать данный кодЯ уже целый день мучаюсь с этими public static

459
Как задетектить инжект dll?

Как задетектить инжект dll?

Подскажите способы по детекту инжекта в процесс dll например monocecil и так далее

283
Выбор DI: AutoMapper vs Autofac

Выбор DI: AutoMapper vs Autofac

У Марка Симана в книге Внедрение зависимостей вNet (написана в 2008 году) рассматриваются несколько библиотек DI: StructureMap, Castle Windsor, Unity, Autofac

359