У меня есть консольное приложение, которое получает имя класса и вызывает его функцию:
Assembly asm = Assembly.GetEntryAssembly();
ObjectHandle oh = Activator.CreateInstance(asm.FullName, typeName);
IScheduledTask task = (IScheduledTask)oh.Unwrap();
task.Execute();
До сих пор не было необходимости в инициализации, кроме этого, но теперь у нас есть некоторые компоненты, которые IScheduledTaskбудет выполняться через внедрение конструктора.
Есть ли способ определения именованного экземпляра с тем же именем класса, который позднее разрешит все зависимости с помощью resol?
То есть, если я получу "SomeScheduledTask" какпараметр, который я могу сделать так:
IScheduledTask task = (IScheduledTask)container.Resolve(typeName); // I know this is possible. The problem is the registration.
Могу ли я сделать что-то подобное для решения моей проблемы:
container.Register(Component.For<IScheduledTask>().Named(t => t.Name).Activator<MyActivator>())
И в моем активаторе сделать что-то вроде этого:*