结合匿名类型函数

时间:2016-06-16 10:33:36

标签: c#

这可能很棘手。 我有7个函数具有几乎相同的签名,但每个函数调用7个其他函数,同样具有相似的签名。我想把它们结合起来所以我只有2个。 以下是我的函数的3个简化版本:

private async Task<IList<T>> QueryAsync<T>(string storedProcedureName, OracleDynamicParameters parameters = null)
{

    // Get our models
    var models = await this._connection.QueryAsync<T>(storedProcedureName, parameters, commandType: CommandType.StoredProcedure);

    // Return our list
    return models.ToList();
}

private async Task<IList<T>> QueryAsync<T, TSecond>(string storedProcedureName, Func<T, TSecond, T> map, string splitOn, OracleDynamicParameters parameters = null)
{

    // Get our models
    var models = await this._connection.QueryAsync<T, TSecond, T>(storedProcedureName, map, parameters, commandType: CommandType.StoredProcedure, splitOn: splitOn);

    // Return our list
    return models.ToList();
}

private async Task<IList<T>> QueryAsync<T, TSecond, TThird>(string storedProcedureName, Func<TFirst, TSecond, TThird, TFirst> map, string splitOn, OracleDynamicParameters parameters = null)
{

    // Get our models
    var models = await this._connection.QueryAsync<T, TSecond, TThird, T>(storedProcedureName, map, parameters, commandType: CommandType.StoredProcedure, splitOn: splitOn);

    // Return our list
    return models.ToList();
}

我想做的是以某种方式将它们结合起来。所以以某种方式检查已经传递了多少类型并调用正确的签名。 任何帮助将不胜感激:D

1 个答案:

答案 0 :(得分:0)

怎么样:

public Dimension getPreferredSize() {
    return new Dimension(1020,500);
}

这意味着params上的一些逻辑和它们上的空逻辑(可空):基本上,如果最后一个为null,则将它们排除在外。

这样你只会有一个大功能(最通用的功能)。