0
これは難しいかもしれません。 私はほぼ同じシグネチャを持つ7つの関数を持っていますが、それぞれが同じようなシグネチャを持つ7つの他の関数を呼び出します。私は何をしたいことは何とかそれらを組み合わせてある匿名型関数の組み合わせ
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();
}
:私はので、私は唯一ここ2 は私の機能の3つの単純化バージョンである必要があり、それらを組み合わせるしたいと思います。どのように多くの型が渡され、正しいシグネチャが呼び出されたかを調べるためにチェックします。 任意の助けいただければ幸いです:D
これらをジェネリックと組み合わせるには良いソリューションがありません。アクション<...>とFunc <...>を見てください。 Theres 16+の亜種。 –
コード生成(T4と考える)FTW。 –
Reflectionを使っていくつかのvodooを行うことはできますが、...あなた自身の責任で行ってください。 –