У вас есть dsl для выполнения операторов InsertInto, и он имеет такую подпись:
ICustomInterface<T1, T2, T3> InsertInto<T1, T2, T3>(string tableName, CustomType type1,
CustomType type2,CustomType type3);
Пример:
var actualInsert = this._sql
.InsertInto<int, string, int>("dbo.Words",
type1,//this is some custom sql type
type2,
type3
)
.Values(
(43, "newVal2", 42), //actual values
(44, "newVal3", 42)
)
Проблема, с которой я столкнулся, заключается в том, что она не будет работать с бесконечным типом параметры. Один вид разрешения, который я думаю, состоит в том, чтобы создать такой метод:
ICustomInterface<TRes> InsertInto<TRes>(string tableName, params CustomType[] types)
where TRes : ITuple;
Но это не красиво (нужно набрать его в скобках - InsertInto<(int,string,int)>
) и не может быть уверен, что CustomType[]
длина массива будет равна TRes
длина элементов кортежа. У кого-нибудь есть идея получше?