Я пытаюсь разрешить открытый общий тип, используя контейнер единства. Я получаю ResolutionFailed Exception. Я регистрируюсь программно. Невозможно понять, что происходит в методе InitContainer.PropertyInjection с открытым общим типом, используя исключение контейнера единственного единства
Обновление: новое свойство InjectionProperty («Возраст», 25)) в InitContainer, вызывающее исключение.
кода с использованием Unity 3,0
public abstract class Person<T> where T : class
{
protected T profession;
public Person(T profession)
{
this.profession = profession;
}
public abstract void WhoAreYou();
public int Age { get; set; }
}
public class Employee<T> : Person<T> where T : class
{
string personType;
public Employee(T profession, string personType) : base(profession)
{
this.personType = personType;
}
public override void WhoAreYou()
{
Console.WriteLine("I am " + personType);
Console.WriteLine("My age is " + Age);
Console.WriteLine("Profession" + typeof(T).ToString());
}
}
public abstract class Profession { }
public class Doctor : Profession { }
class Program
{
static void Main(string[] args)
{
var container = InitContainer();
var p = container.Resolve<Person<Doctor>>();
p.WhoAreYou();
Console.ReadKey();
}
static UnityContainer InitContainer()
{
UnityContainer container = new UnityContainer();
container.RegisterType(typeof(Person<>), typeof(Employee<>),
new ContainerControlledLifetimeManager() ,
new InjectionConstructor(new GenericParameter("T"), "Employee"),
new InjectionProperty("Age",25));
return container;
}
}
Хм ... в чем преимущество этого маршрута? Я просто вижу гору проблем, которые ждут, чтобы произойти, в этот момент ... – code4life
Просто я тренирую контейнер, чтобы понять существующий код. – Vytheese
Вы пытаетесь разрешить Employee, но конструктору нужен 'personType' –
jlvaquero