c# – 使用泛型类和接口实现抽象工厂
作者:互联网
我想实现一个抽象工厂(带有单例)并在我的代码中使用它,并将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
如何使用类及其相应的接口实现方法定义的抽象类.例如,我想使用它如下:
ConcreteFactory : AbstractFactory<ConcreteClass, IConcreteClass>
解决方法:
您需要添加一个约束,说明TType必须从TInterfaceType继承:
public abstract class AbstractFactory<TType, TInterfaceType>
where TType : TInterfaceType, new()
where TInterfaceType : class
现在,编译器知道TType继承自TInterfaceType,而objectTtype因此可分配(并且可返回)到TInterfaceType.
标签:c,abstract-class,abstract-factory 来源: https://codeday.me/bug/20190627/1304333.html