删除多个对象类型的冗余

时间:2019-04-04 05:18:42

标签: c# sqlite simplification

我有一个从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();
            }
        }

1 个答案:

答案 0 :(得分:1)

您可以做的是创建一个通用类(请参阅此处的教程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();
        }
    }
}

P.S。尚未测试代码,因此只需将其用作参考即可。