Je suis en train de mettre en œuvre une méthode d'assistance en utilisant les médicaments génériques (C#/3.5) J'ai une belle structure de classes, avec des classes de base comme ceci:Utilisation des objets de base comme paramètres dans une fonction générique
public class SomeNiceObject : ObjectBase
{
public string Field1{ get; set; }
}
public class CollectionBase<ObjectBase>()
{
public bool ReadAllFromDatabase();
}
public class SomeNiceObjectCollection : CollectionBase<SomeNiceObject>
{
}
Et je tiens à retreive collection à l'aide d'une méthode générique comme ceci:
public class DAL
{
public SomeNiceObjectCollection Read()
{
return ReadFromDB<SomeNiceObjectCollection>();
}
T ReadFromDB<T>() where T : CollectionBase<ObjectBase>, new()
{
T col = new T();
col.ReadAllFromDatabase();
return col;
}
}
Cela ne construit pas, avec
Error 66 The type 'SomeNiceObjectCollection' cannot be used as type parameter 'T' in the generic type or method 'ReadFromDB<T>'. There is no implicit reference conversion from 'SomeNiceObjectCollection' to 'CollectionBase<ObjectBase>'.
L'objet SomeNiceObjectCollection EST une CollectionBase, une CollectionBase pour être exacte. Alors, comment puis-je faire fonctionner ça?
Excellent.CollectionBase mis en œuvre allready une interface que je avais besoin, je a changé le ReadFromDB. Merci! –
edosoft