je la situation suivante dans le code, que je soupçonne peut-être un peu dodgey:Accès méthodes statiques sur une classe générique dans C#
J'ai une classe:
abstract class DataAccessBase<T> : IDataAccess where T : AnotherAbstractClass
Cette classe DataAccessBase
a également une méthode de fabrication statique qui crée des instances de classes dérivées de lui-même à l'aide d'une valeur ENUM dans une déclaration qui à décider quel dérivé de type à créer:
static IDataAccess CreateInstance(TypeToCreateEnum)
maintenant, la ty pes dérivés de DataAccessBase<T>
sont eux-mêmes pas générique, ils précisent un type T:
class PoLcZoneData : DataAccessBase<PoLcZone> // PoLcZone is derived from AnotherAbstractClass
Jusqu'à présent, je ne suis pas sûr que ce soit repousser les limites de bon usage des médicaments génériques, mais ce que je suis vraiment préoccupé par comment pour accéder à la méthode statique CreateInstance()
en premier lieu:
La façon dont je fais cela en ce moment est de simplement passer tout type T où T: AnotherAbstractClass
. En particulier je passe AnotherAbstractClass
lui-même. Cela permet une bonne compilation, mais il me semble que passer n'importe quel type à une classe générique juste pour avoir de la statique est un peu douteux.
J'ai fait simplifié la situation un peu comme DataAccessBase<T>
est le niveau inférieur dans la chaîne d'héritage, mais les méthodes d'usine statique existe dans un niveau intermédiaire avec des classes telles que PoLcZoneData
étant les plus dérivées sur le seul niveau qui n'est pas générique.
Que pensent les gens de cet arrangement?
Quelle langue est-ce? –
Je suis désolé, son C#. J'ai oublié d'ajouter ça au titre. – MrLane