Доступные методы в зависимости от конструктора C#

Возможно ли менять доступные методы в зависимости от конструктора? К примеру, есть класс Data с двумя конструкторами: Data(String ID) и Data(String ID,Int32 Number) и методами Create(), Delete(), Count().

Необходимо:

Если создается экземпляр класса Data Data1 = new Data("123");, то доступны будут лишь методы Create() и Delete(). Если же экземпляр класса Data Data2 = new Data("123",123);, то доступны все 3 метода: Create(), Delete() и Count(). Заранее всем спасибо за помощь и потраченное время.


Ответы (1 шт):

Автор решения: aepot

ООП - наследование.

public class Data
{
    public Data(string id)
    {
        //...
    }

    public void Create()
    {
        //...
    }

    public void Delete()
    {
        //...
    }

    // ...
}

public class DataItem : Data
{
    public DataItem(string id, int number) : base(id)
    {
        //...
    }

    public int Count()
    {
        //...
    }

    // ...
}
Data data1 = new Data("123");
DataItem data2 = new DataItem("123", 123);

List<Data> items = new List<Data>();
items.Add(data1);
items.Add(data2); // без наследования такое бы не сработало
→ Ссылка