gpt4 book ai didi

c# - 使用泛型清理代码

转载 作者:行者123 更新时间:2023-11-30 21:53:48 25 4
gpt4 key购买 nike

我对泛型有点陌生,我遇到了这个问题,我有一些重复的代码,我正在尝试清理。签名不同,但执行的代码相同,有没有办法传入泛型类型,而不必在新签名中指定每种类型?

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;
}

最佳答案

这个问题很难明确回答,因为你还没有指定Mapper.Map的签名.

但是,如果Mapper.Map可以拿IServiceResponse<T>任何类型的 T , 那么这就可以了。

public JsonResult<JsonData> GetServiceData<T>(Func<IServiceResponse<T>> func)
{
IServiceResponse<T> response = func();
var jsonDataContainer = Mapper.Map<JsonData>(response);

var result = GetJsonResult(jsonDataContainer);

return result;
}

关于c# - 使用泛型清理代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33641713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com