Как создать производный класс вместо его базы - PullRequest
0 голосов
/ 27 сентября 2018

Это моя проблема: у меня есть класс A, который используется (создается) несколько раз в классе B.

Мне нужно изменить поведение класса A, в основном конструктора, а затем явыводит его с помощью класса C. Класс C: класс A

Я хотел бы, чтобы этот класс B использовал в своих методах класс C вместо класса A, избегая переопределения всех методов, которые его использовали.Возможно ли это?

Большое спасибо


Мне было не ясно, поэтому позвольте мне попытаться объяснить лучше с кодом.

Public Class A
{
`// Simple constructor
    public A(params[])
    {
        // things here
    }
}

Public Class C : A
{
    // Constructor doing different thing then base
    public C(params[]): base(params[])
    {
        // do different things here
    }
}

Public class B
{
    public B(params[])
    {    }

    public method_A(params[])
    {
        A _temp = new A(params[]);
        // do things here with A
    }
}

Я использую B вмоя программа, но мне бы хотелось, чтобы для одного экземпляра B она использовала A, а для другого экземпляра B вместо A использовалась бы C *

что-то вроде:

Main()
{
   B _instance1 = new B();

   B _instance2 = new B(); 

   // use instance 1
   _instance1.method_A(...);
   // use instance 2 
   _instance2.method_A(...); // do something here for using C instead of A in the method
}

1 Ответ

0 голосов
/ 27 сентября 2018

Просто создайте экземпляр класса C в классе B и используйте его так же, как класс A, в нем будут те же функции, что и в A с добавленной логикой в ​​классе C.

в конструкторе, возможно, стоит сделать эточто-то вроде:

public class C : A
{
    public C() : base()
    {
     // do stuff
    }
}

, чтобы он также вызывал конструктор А.

...