私は基本的に戦略パターンを実装しようとしていますが、「インターフェイス」実装 (同じオブジェクトから継承する) に異なるパラメーターを渡したいのですが、これが可能かどうかはわかりません。間違ったパターンを選択している可能性があります。次のようなエラーが表示されます
「StrategyA」は、継承された抽象メンバー「void DoSomething(BaseObject)」を実装していません
以下のコードで:
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);
}
}