簡體   English   中英

使用泛型清理代碼

[英]Cleaning up code with generics

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

很難明確地回答這個問題,因為您尚未指定Mapper.Map的簽名。

但是,如果Mapper.Map可以采用任何類型TIServiceResponse<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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM