Voulez-vous dire, vous avez une table avec différentes valeurs stockées dedans, et dépendez-vous d'une valeur que vous voulez retourner différents objets?
par exemple. vous avez un animal de compagnie de table
id type name
---------------------
1 dog bello
2 cat scott
3 cat tiger
et vous voulez obtenir des objets de chien et de chat? J'ai un cas similaire, et je l'ai résolu en créant une classe Dog et une classe Cat qui héritent toutes deux de la classe autogénérée subsonic et implémentent mon stub d'interface IPet, en conjonction avec une méthode factory, où je place mes objets sur nouveau Type:
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);
}
}
Typée à partir de la mémoire, non garantie pour la compilation. Mais la théorie devrait être claire.
J'ai légèrement modifié l'exemple, car cela ne fonctionnera pas (vous pouvez lancer un chien comme animal de compagnie, mais pas un animal de compagnie pour un chien). –