Básicamente estoy tratando de implementar un patrón de estrategia, pero quiero pasar diferentes parámetros a la implementación de "interfaces" (que heredan del mismo objeto) y no sé si Esto es posible. Tal vez estoy eligiendo un patrón equivocado, me sale un error similar alPatrón de estrategia con diferentes parámetros en la interfaz (C#)
'StrategyA' no implementa miembro abstracta heredada 'HacerAlgo vacío (BaseObject)'
con el código de abajo:
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 tal escenario común, que he visto implementaciones donde obj sigue creciendo y creciendo ... –
utilizan interfaces en lugar de clases por ejemplo interfaz pública { vacío HacerAlgo (BaseObject objeto); } Luego, Strategy heredará esa interfaz. Base su SP alrededor de la interfaz o una interfaz de IStrategy que hereda de esta interfaz.Por cierto uso DIP para Inyección con un IoC como Ninject – GregJF