I am basically trying to implement a Strategy pattern, but I want to pass different parameters to the "interfaces" implementation (that inherit from the same object) and don't know if this is possible. Maybe I'm choosing the wrong pattern, I get an error similar to
'StrategyA' does not implement inherited abstract member 'void DoSomething(BaseObject)'
with the code below:
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);
 }
}