2010-10-10 5 views
0

Je suis relativement nouveau à .net et je crée une application Web à des fins d'apprentissage. J'ai un DAL avec des méthodes non statiques. Ma question est, comment dois-je accéder à ces méthodes dans la couche de gestion?Accès aux méthodes DAL non statiques

Je ne suis pas sûr que ce soit une bonne ou une mauvaise façon, mais actuellement j'utiliser cette classe pour créer des instances des méthodes DAL:

public DataAccess 
{ 
    public static T GetInstance<T>(Type type) 
    { 
     return (T)Activator.CreateInstance(type); 
    } 
} 

Et j'utilise les instances comme ça dans ma DLL:

public void Save(Article article) 
{ 
    ArticleDAL art = DataAccess.GetInstance<ArticleDAL>(typeof(ArticleDAL)); 
    art.Save(article); 
} 

Des améliorations ou des recommandations?

Répondre

1

Il n'y a vraiment aucune raison de ne pas simplement créer une nouvelle instace du DAL, l'usine ne parvient pas à rien ici.

public void Save(Article article) 
{ 
    ArticleDAL art = new ArticleDAL(); 
    art.Save(article); 
} 
+0

Bonjour Paul, merci pour la réponse rapide. Le contexte est que je fais un simple CMS. Serait-il préférable à long terme en termes de maintenabilité par exemple, si j'utilisais une usine plus générique telle que proposée par Mark, ou si je suivais votre suggestion? – gdp

+0

Le motif d'usine est génial quand il y a une certaine logique impliquée dans la création d'objet mais pour l'instantiation simple il est inutile. Pour la maintenabilité, je ferais passer le DAL dans le constructeur et utiliser l'injection de dépendance. –

+0

Ok je comprends, quel genre de logique devrait appartenir dans le modèle d'usine? – gdp

1

Oui, utiliser une contrainte générique donc pas besoin de passer le type en tout:

public DataAccess 
{ 
    public static T GetInstance<T>() where T : new() 
    { 
     return new T() 
    } 
}