Могу ли я вернуть коллекцию из нескольких производных типов из запроса Dapper

У меня есть структура класса, похожая на эту:

public abstract class Device
{
    public int DeviceId { get; set; }
    //Additional Properties
}

public class DeviceA : Device
{
    //Specific Behaviour
}

public class DeviceB : Device
{
    //Specific Behaviour
}

Мне нужно получить список устройств или отдельное устройство, которое создается как соответствующий производный тип (на основе значения типа в записи устройства в БД). То есть коллекцияDevice Объекты должны содержать несколько объектов с разными типами, все из которых являются производными.Device

Я реализовал это следующим образом, но что-то просто неЯ не чувствую себя правильно об этом.

public static IEnumerable AllDevices()
{
    using (var connection = CreateConnection())
    {
        connection.Open();
        return connection.Query("SELECT * FROM Device").Select(d =>
            {
                Device device = null;
                if (d.DeviceTypeID == 1)
                    device = new DeviceA();
                else if (d.DeviceTypeID == 2)
                    device = new DeviceB();
                else throw new Exception("Unknown Device");
                device.DeviceId = d.DeviceID;
                return device;
            });
    }
}

Это правильный способ добиться этого с помощью Dapper, или есть лучший подход?

Ответы на вопрос(2)

Ваш ответ на вопрос