Удалить избыточность с несколькими типами объектов - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть функция, которая выбирает некоторые свойства из запроса 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 Ответ

1 голос
/ 04 апреля 2019

Что вы можете сделать, это создать общий класс (см. Руководство здесь 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 Не проверял код, поэтому просто используйте его в качестве справки.

...