我对Generics有点新,我遇到了这个问题,我有重复的代码,我正在努力清理。签名是不同的,但正在执行的代码是相同的,有没有办法传入泛型类型而不必在新签名中指定每种类型?
public JsonResult<JsonData> GetServiceData(Func<IServiceResponse<IEnumerable<Order>>> func)
{
var response = func();
var jsonDataContainer = Mapper.Map<JsonData>(response);
var result = GetJsonResult(jsonDataContainer);
return result;
}
public JsonResult<JsonData> GetServiceData(Func<IServiceResponse<List<int>>> func)
{
var response = func();
var jsonDataContainer = Mapper.Map<JsonData>(response);
var result = GetJsonResult(jsonDataContainer);
return result;
}
public JsonResult<JsonData> GetServiceData(Func<IServiceResponse<User>> func)
{
var response = func();
var jsonDataContainer = Mapper.Map<JsonData>(response);
var result = GetJsonResult(jsonDataContainer);
return result;
}
答案 0 :(得分:3)
很难肯定地回答这个问题,因为你没有指定Mapper.Map
的签名。
但是,如果Mapper.Map
可以使用任何类型IServiceResponse<T>
的{{1}},那么这将有效。
T