簡體   English   中英

刪除具有多種對象類型的冗余

[英]Remove redundancies with multiple object types

我有一個從 SQLite 查詢中選擇一些屬性的函數。 該函數返回例如一個靜態列表<Requests> 它工作得很好,唯一的問題是我需要這個函數來操作許多不同的對象,比如 cnn.Query <Requests> 、 cnn.Query <Responses>等等。 所以我不想為 20 個不同的對象調用這個函數 20 次。

有人可以告訴我如何使這些<Requests><Responses>動態化,只調用一次函數嗎?

兩倍幾乎相同的功能,我想減少到一個:

public static List<Requests> ReadRequests(SQLiteCommand command)
        {
            using (IDbConnection cnn = new SQLiteConnection(command.Connection))
            {
                var output = cnn.Query<Requests>("select * from Requests", new DynamicParameters());
                return output.ToList();
            }
        }
        public static List<Responses> ReadResponses(SQLiteCommand command)
        {
            using (IDbConnection cnn = new SQLiteConnection(command.Connection))
            {
                var output = cnn.Query<Responses>("select * from Requests", new DynamicParameters());
                return output.ToList();
            }
        }

您可以做的是創建一個通用類(請參閱此處的教程http://dotnetpattern.com/csharp-generics )。 盡管如此,您仍然需要每次都構建和調用該類。

例如:

public class GenericClass<T>
{
    public  List<T> ReadT(SQLiteCommand command)
    {
        using (IDbConnection cnn = new SQLiteConnection(command.Connection))
        {
            var output = cnn.Query<T>("select * from "+typeof(T).Name, new DynamicParameters());
            return output.ToList();
        }
    }
}

PS 代碼沒有測試過,僅供參考。

暫無
暫無

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

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