how I can do mapping in serviceStack.ormlite or Dapper dependent on column type?

For example I have next classes:

```
//table A
abstract Class A
{
  public ulong? id {get; set}
  public string Name {get; set}
  public string DeviceType {get; set}

  abstract public void method()
}

//no table
Class B : A
{
  public override void method()
  {
    //dependent on B implementation
  }
}

//no table
Class C : A
{
  public override void method()
  {
    //dependent on C implementation
  }
}

```

From ORM I need something lite that:

```
List<A> items = orm.Must_Return_list_With_B_and_C_Instances_From_A_Table();

```

How I see this logic:

```
function Must_Return_list_With_B_and_C_Instances_From_A_Table()
{
  var items = new List<A>();
  foreach(var row in rows)
  {
    if (row.DeviceType == "B")
    {
      items.Add(new B(row)); // mean mapping there
    }
    else if (row.DeviceType == "A")
    {
      items.Add(new C(row)); // mean mapping there
    }
  }
}

```

Then I can:

-use next:

```
foreach(var item in items)
{
  item.method(); // calls the right method  of class B or C
}

```

-if I need add new deviceType I implement only class D : A and edit the mapper, and dont touch global program logic.

This is generally implemented in the context of ORM and С# idea?

If you understand what I want, please indicate the direction of how to make similar. Many thanks.