我有一个如下界面
public interface IProcess<T> where T : class
{
void Process(string id);
}
我有一个依赖于其他类的类。所以我正在按照以下方式使用构造函数注入
public class ProcessFactory: IProcessFactory
{
public ProcessFactory(IProcess<ProcessSalaryRequest> processSalaryRequest,
IProcess<ProcessLeavesRequest> processLeavesRequest)
{
_processSalaryRequest = processSalaryRequest;
_processLeaveRequest = processLeavesRequest;
}
}
public IProcess GetInstance(string type)//error comes here
{
Type atype;
if (Enum.TryParse(type, out atype))
{
switch (atype)
{
case Type.Type1:
return _processSalaryRequest ;
break;
case Type.Type2:
return _processLeaveRequest ;
break;
}
}
return null;
}
}
这是用法
IProcess processRequest = _ProcessFactory.GetInstance("Type1");
但是我看到以下错误,
使用通用类型IProcess需要1个类型参数
如何修复“ GetInstance”方法的返回类型?
答案 0 :(得分:1)
当我们在您的代码示例中可以看到的唯一接口是通用接口-IProcess
时,我们尝试返回非通用接口IProcess<T>
。编译器不知道如何将IProcess<T>
转换为IProcess
。
一种可能的解决方案是添加一个非泛型接口,并使该泛型接口从其继承:
public interface IProcess
{
void Process(string id);
}
public interface IProcess<T> : IProcess where T : class
{
}