我有一個通用的查詢方法,看起來像下面這樣
List< T> Query<T>(QueryModel query) where T : 基準類
{
//獲得資料并通過T進行反序列化。
}
//where T是表DTO,通過T反序列化回應。
現在我想實作多個查詢的并行執行
為此,我需要在回應和輸入中擁有多個型別的引數,并希望實作這樣的效果:List< T1, T2, T3 > Query<T1, T2, T3> (List<QueryModel> queries)
where T1: 基準類。
where T2: BaseClass,
where T3: 基地類
{
//for each query in queries
//獲得每個查詢的資料,并且
//按T1/T2/T3進行相應的反序列化。
//在單個通用集合中回傳所有回應。
}
在上面的例子中,可以有3個查詢,每個查詢都可以通過提供的型別引數進行相應的反序列化。
但是我相信我們不能在像List這樣的集合中擁有一個以上的型別化引數,不確定這一點如何實作。
PS:我現在可以使用有限的表集進行查詢,例如使用3-4個型別的引數進行查詢,所以可以添加固定數量的型別引數的多載,如果有一些解決n個型別引數的方案就更好了。
uj5u.com熱心網友回復:
你也許可以這樣寫
你可以這樣寫
(T1 r1, T2 r2, T3 r3) Query<T1, T2, T3> (QueryModel q1,QueryModel q2,QueryModel q3 )
這將不允許任意數量的查詢,但無論如何你不能有可變數量的通用引數,所以我沒有看到任何辦法在保持通用型別的同時做到這一點。
uj5u.com熱心網友回復:
從C#7.0開始,我相信你可以使用圖元,例如:
List<(T1, T2, T3)> Get<T1,T2,T3>(string query) where T1 : BaseClass, new() where T2 : BaseClass, new() where T3 : BaseClass, new()
{
var result = new List<(T1, T2, T3)>
{
( new T1(), new T2(), new T3()),
( new T1(), new T2(), new T3())
};
return result;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/318610.html
標籤:
上一篇:型別腳本類約束字串
