Modèle de stratégie avec Différents paramètres de l'interface (C#)

Je suis en fait, d'essayer de mettre en œuvre un modèle de Stratégie, mais je veux passer les différents paramètres pour les "interfaces" de la mise en œuvre (qui héritent de la même objet) et ne sais pas si c'est possible. Peut-être que je suis un mauvais choix de modèle, j'obtiens un message d'erreur semblable à

'StrategyA" n'a pas hérité de mettre en œuvre abstraite membre 'void DoSomething(BaseObject)'

avec le code ci-dessous:

abstract class Strategy
{
 public abstract void DoSomething(BaseObject object);
}

class StrategyA : Strategy
{
 public override void DoSomething(ObjectA objectA)
 {
  //. . .
 }
}

class StrategyB : Strategy
{
 public override void DoSomething(ObjectB objectB)
 {
  //. . .
 }
}

abstract class BaseObject
{
}

class ObjectA : BaseObject
{
 //add to BaseObject
}

class ObjectB : BaseObject
{
 //add to BaseObject
}

class Context
{
   private Strategy _strategy;

 //Constructor
 public Context(Strategy strategy)
 {
  this._strategy = strategy;
 }

    //i may lose addtions to BaseObject doing this "downcasting" anyways?
 public void ContextInterface(BaseObject obj) 
 {
  _strategy.DoSomething(obj);
 }

}
  • +1 un tel scénario, j'ai vu des implémentations où obj ne cesse de croître et grandir...
  • Utiliser les Interfaces au lieu de Classes, par exemple interface publique (void DoSomething(BaseObject objet); } Ensuite, avoir une Stratégie hériter de cette interface. La Base de votre SP autour de l'Interface ou un IStrategy interface qui hérite de cette interface. BTW utiliser DIP pour l'Injection avec un Cio comme Ninject
InformationsquelleAutor user210757 | 2009-12-24