我有一个通用的接口,像这样:实现接口具体
public interface IHandler
{
T Process<T>(IProcess process) where T : new();
}
有时我想具体实现接口,例如:
public class BoolHandler : IHandler
{
public bool Process<bool>(IProcess process)
{
// Do some work - set to true or false
return true;
}
}
这可能吗?
编辑: 目前我可以这样做:
// Injecct handler in Main and work with single handler
ViewModel model = handler.Process<ViewModel>(process);
DifferentModel model = handler.Process<DifferentModel >(process);
随着上市我就必须这样做(这我想建议避免,它要求我创造一堆处理程序上飞):
IHandler<ViewModel> handler = new Handler<ViewModel>();
ViewModel viewModel = handler.Process(process);
IHandler<DifferentModel> handler = new Handler<DifferentModel>(); // Create yet another handler - arrr
DifferentModel viewModel = handler.Process(process);
移动参数'T'到'IHandler'接口,并从'Process'方法将其删除。方法的通用参数需要针对您的实现无法实现的所有适用类型统一工作。 – Lee
实施取决于提供的类型吗?如果是这样,那么该方法不是“通用的” –
“BoolHandler”和其他处理程序是否由同一个消费者使用(即想要多态消费它们)?如果不是,则可以有两个接口,一个非泛型接口和一个通用方法,另一个泛型接口使用非泛型方法。 –