我有一个抽象类型,我想用统一解决: 这是我的具体类型实现:
public class ConcreteType : AbstractType<Blog>
{
}
并在Bootstraper课程中。
container.RegisterType<AbstractType<Blog>, ConcreteType>();
没关系。 但我需要注册另一种类型:
container.RegisterType<IFactory<AbstractType<Blog>>,ConcreteFactory<ConcreteType>>();
问题是有错误:
ConcreteType类型不能用作类型参数'TTo' 通用类型或方法 “UnityContainerExtensions.RegisterType(IUnityContainer, params InjectionMember [])'。没有隐式引用转换 从'ConcreteFactory'到 '器IFactory&GT;'。
我希望Unity使用第一个“注册类型”来解决第二个问题。
怎么可能?
编辑:
这是ConcreteType实现:
public class ConcreteFactory<T> : IFactory<T> where T : new()
{
public T Create()
{
return new T();
}
}
和IFactory声明:
public interface IFactory<T>
{
T Create();
}