我很少使用以下类型的界面

interface IActivity<T>
{
    bool Process(T inputInfo);
}

具体的类如下
class ReportActivityManager :IActivity<DataTable>
{
    public bool Process(DataTable inputInfo)
    {
        // Some coding here
    }
}

class AnalyzerActivityManager :IActivity<string[]>
{
    public bool Process(string[] inputInfo)
    {
        // Some coding here
    }
}

现在,我该如何编写工厂类,该类重新调整通用接口(interface),例如IActivity。
class Factory
{
    public IActivity<T> Get(string module)
    {
        // ... How can i code here
    }
}

谢谢

最佳答案

您应该创建通用方法,否则编译器将不知道返回值中T的类型。当您拥有T时,您将能够根据T的类型创建事件:

class Factory
{
    public IActivity<T> GetActivity<T>()
    {
        Type type = typeof(T);
        if (type == typeof(DataTable))
            return (IActivity<T>)new ReportActivityManager();
        // etc
    }
}

用法:
IActivity<DataTable> activity = factory.GetActivity<DataTable>();

关于c# - 工厂类返回通用接口(interface),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13250411/

10-09 01:53