Как получить доступ к хранилищу класса c, созданному в классе A, из класса B, когда calss B вызывается из класса A, используя экземпляр - PullRequest
0 голосов
/ 06 марта 2020

У меня есть 3 класса, скажем, класс A и класс B и класс C. Мой класс A создает экземпляр класса B и класса C и вызывает метод класса B и метод класса C. Теперь мне нужно получить доступ к экземпляру класса c, созданному в классе A, из метода класса B, не создавая новый экземпляр класса 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
   }
}

Может ли кто-нибудь помочь мне с вышеуказанным logi c .

Ответы [ 2 ]

0 голосов
/ 07 марта 2020

Вы можете вернуть экземпляр класса, к которому хотите получить доступ.

0 голосов
/ 06 марта 2020

Вы могли бы ...

Добавить параметр от 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);
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...