我想实现一个抽象工厂(带有单例)并在我的代码中使用它,并将TType
和TInterfaceType
的具体实例映射到。
这是我目前的代码:
public abstract class AbstractFactory<TType, TInterfaceType> where TType : new() where TInterfaceType : class
{
private TInterfaceType objectTtype;
public TInterfaceType getInstance()
{
try
{
if (objectTtype == null)
{
objectTtype = new TType();
}
return objectTtype;
}
catch (Exception e)
{
throw e;
}
}
}
我收到错误:
无法隐式将TType类型转换为TInterfaceType
如何使用类及其相应的接口实现方法定义的抽象类。例如,我想按如下方式使用它:
ConcreteFactory : AbstractFactory<ConcreteClass, IConcreteClass>
答案 0 :(得分:3)
您需要添加一个约束,说明TType
必须从TInterfaceType
继承:
public abstract class AbstractFactory<TType, TInterfaceType>
where TType : TInterfaceType, new()
where TInterfaceType : class
现在编译器知道TType
继承自TInterfaceType
而objectTtype
因此可分配(并且可返回)TInterfaceType
。