删除具有多个对象类型的冗余



我有一个函数,可以从SQLite查询中选择一些属性。此函数返回例如静态列表<Requests>。它运行良好,唯一的问题是我需要这个函数在许多不同的对象上运行,比如 cnn。查询<Requests>,CNN。查询<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();
        }
    }
}

附言没有测试过代码,所以把它当作参考。

最新更新