2010-08-23 7 views
0

Existe-t-il un moyen de résoudre mon code ci-dessous? Je suis coincé.
Comment puis-je utiliser une fabrique pour créer des présentateurs génériques, est-ce même possible sans une classe de base non générique?Combinaison d'un modèle MVP générique avec un modèle d'usine abstrait

public abstract class Presenter<T> 
{} 

public SomePresenter : Presenter<ISomeVew> 
{} 

public SomeOtherPresenter : Presenter<ISomeOtherView> 
{} 

public class Factory() 
{ 

    public ??? CreatePresneter(int runTimeValue) 
    { 
    if (runTimeValue == 1) 
     return new SomePresenter() 
    else 
     return new SomeOtherPresenter() 
    } 

}

Répondre

0

Plusieurs fois classes de base génériques ont besoin de bases non-génériques, donc écrire

public abstract class Presenter 
{} 

public abstract class PresenterOf<T> : Presenter 
{} 

et utiliser PresenterOf pour vos présentateurs.

Puis CreatePresenter peut renvoyer Presenter. Évidemment, cela n'aide que si ISomeView et ISomeOtherView ont une classe de base sur laquelle Presenter peut travailler.

Si ces vues et présentateurs n'ont pas de points communs dans l'interface, il peut être inutile d'utiliser une fabrique pour les créer tous.

Questions connexes