使用泛型 class 和接口实现抽象工厂
Implement abstract factory using generic class and interface
我想实现一个抽象工厂(使用单例)并在我的代码中使用它,并将其映射到 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;
}
}
}
我收到一个错误:
Cannot implicitly coonvert type TType to TInterfaceType
如何使用 class 及其相应接口实现带有方法定义的抽象 class。例如我想按如下方式使用它:
ConcreteFactory : AbstractFactory<ConcreteClass, IConcreteClass>
您需要添加一个约束说明 TType
必须继承自 TInterfaceType
:
public abstract class AbstractFactory<TType, TInterfaceType>
where TType : TInterfaceType, new()
where TInterfaceType : class
现在编译器知道 TType
继承自 TInterfaceType
,因此 objectTtype
可分配(并可返回)给 TInterfaceType
。
我想实现一个抽象工厂(使用单例)并在我的代码中使用它,并将其映射到 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;
}
}
}
我收到一个错误:
Cannot implicitly coonvert type TType to TInterfaceType
如何使用 class 及其相应接口实现带有方法定义的抽象 class。例如我想按如下方式使用它:
ConcreteFactory : AbstractFactory<ConcreteClass, IConcreteClass>
您需要添加一个约束说明 TType
必须继承自 TInterfaceType
:
public abstract class AbstractFactory<TType, TInterfaceType>
where TType : TInterfaceType, new()
where TInterfaceType : class
现在编译器知道 TType
继承自 TInterfaceType
,因此 objectTtype
可分配(并可返回)给 TInterfaceType
。