编程语言
首页 > 编程语言> > c# – 使用泛型类和接口实现抽象工厂

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