Вы могли бы ...
Добавить параметр от C
до MethodB
: (на самом деле это невозможно, но возможно)
void MethodB(C c){c.MethodC();}
, что имеет обратную сторону от введения зависимость: B
«знает» о классе C
, что нежелательно.
Или добавьте параметр Action
к MethodB
:
void MethodB( Action a ) { a(); }
и вызовите его как это:
// in a Method in A
b.MethodB(() => c.MethodC());
Или вы можете работать с интерфейсом:
public interface ICommonValidationLogic{
public void Validate();
}
class C : ICommonValidationLogic
{
public override void Validate(){
// Do your thing
}
}
class B
{
public void MethodB( ICommonValidationLogic v )
{
// v here is actually the instance of C created in A
v.Validate();
}
}
class A
{
void SomeMethodOfA()
{
B b = new B();
ICommonValidationLogic c = new C();
b.MethodB(c);
}
}