Вы имеете в виду, у вас есть таблица с различными значениями, хранящимися в ней, и, в зависимости от значения, которое вы хотите вернуть различным объектам?
например. у вас есть столовое животное
id type name
---------------------
1 dog bello
2 cat scott
3 cat tiger
а вы хотите получить от нее предметы для собак и кошек?
У меня похожий случай, и я решил его, создав класс Dog и класс Cat, которые оба наследуют от автоматически сгенерированного класса petics subsonic и реализуют мою заглушку интерфейса IPet в сочетании с методом фабрики, где я приводил свои объекты в новый тип :
public Class Dog : Pet, IPet { }
public Class Cat : Pet, IPet { }
public Interface IPet { }
public static IPet GetAllPets()
{
List<IPet> pets = new List<IPet>();
foreach Pet pet in PetCollection.FetchAll()
{
IPet newpet;
if (pet.Type == "dog")
newpet = new Dog();
else if (pet.Type == "cat")
newpet = new Cat();
else throw new InvalidOperationException("Unknown pet type " + pet.Type);
pet.CopyTo(newpet);
newpet.MarkOld();
pets.Add(newpet);
}
}
Печатается по памяти, компиляция не гарантируется. Но теория должна быть ясной.