Pregunta

¿Hay alguna manera de resolver mi código de abajo? Estoy un poco atascado.
¿Cómo puedo usar una fábrica para crear presentadores genéricos, es incluso posible sin una clase base no genérico?

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()  
  }

}

¿Fue útil?

Solución

Muchas veces las clases base genéricos necesitan bases no genéricos, por lo que escribir

public abstract class Presenter
{}

public abstract class PresenterOf<T> : Presenter
{}

y el uso PresenterOf para sus presentadores.

A continuación, puede volver CreatePresenter Presenter. Obviamente, esto sólo ayuda si ISomeView y ISomeOtherView tienen una clase base que Presentador puede trabajar.

Si estos puntos de vista y los presentadores no tienen elementos comunes en la interfaz, a continuación, utilizando una fábrica a hacer que todos podrían no tener sentido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top