Уплотнение абстрактного класса или интерфейса в классе .NET

В Scala можно определить базовый класс или свойство (интерфейс), запечатанные, так что только классы, которым разрешено распространять этот класс, должны быть помещены в один класс.

Это полезный шаблон при кодировании библиотек, есть ли какой-либо эквивалент в .NET?

Ответ 1

Единственный способ моделирования заключается в том, чтобы иметь частный конструктор в абстрактном классе и обеспечить реализацию как вложенные классы.

Пример

public abstract class Foo
{
  private Foo(int k) {}

  public class Bar : Foo
  {
     public Bar() : base(10) {}
  }
}