首页 > 解决方案 > 当使用实例从 A 类调用 calss B 时,如何从 B 类访问在 A 类中创建的 C 类的实例

问题描述

我有 3 个类,分别是 A 类和 B 类以及 C 类。我的 A 类正在创建 B 类和 C 类的实例,并正在调用 B 类方法和 C 类方法。现在我需要从 B 类方法访问在 A 类中创建的 C 类实例,而无需创建 C 类的新实例。

Class A
{

   B b = new B();
   C c = new C();
   c.MethodC();
   b.MethodB();

}

Class B
{
  MethodB()
  {
    //some functionality implemented
    // Here i need to access instance c created in class A
  }
}

Class C
{
   MethodC()
   {
     // comman logic for validation
   }
}

任何人都可以帮助我了解上述逻辑。

标签: c#.netwinforms

解决方案


你可以 ...

添加Cto的参数MethodB:(不要,实际上但可能)

void MethodB(C c){c.MethodC();}

它具有引入依赖项的缺点:B“知道”C不可取的类。

或添加Actionto的参数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);
     }
}

推荐阅读