Вот мысль перед сном меня посетила:
а почему бы не иметь возможность расширять класс через включение какого-либо кода без использования наследования?
Например,
class A {
private int Sum (int a, int b) {
return a+b;
}
}
Другой бы класс мог использовать этот код (что-то типа partial, но имя класса может быть совершенно другим)
class B : include A {
// пользуюсь методами класса A
}
class C : include A {
// ...
}
Скомпилированный бы код включал код из класса как "родной"
Конечно, эти методы класса A скорее всего не зависели бы от внешних переменных и тем самым напоминали бы статические методы или классы расширения,
но мне кажется у такого способа есть некоторые преимущества перед последними:
— методы расширения переполняют Intellisense и появляются везде где надо и не надо.
— статические методы "открыты", а я бы хотел скрыть реализацию или испльзовать ее в ограниченном количестве классов
— что-то еще, не хочу думать
Как бы вы относитесь к такой возможности языка c#?