2010-06-18 5 views
9

Я хочу создать тип, который может быть унаследован по типам в той же сборке, но не может быть унаследован за пределами сборки. Я хочу, чтобы тип был видимым вне сборки.Могу ли я сделать тип «запечатанный, за исключением внутренних типов»

Возможно ли это?

ответ

17

Вы можете сделать конструктор внутренний:

public class MyClass 
{ 
    internal MyClass() { } 
} 

Каждый класс, производный от базового класса должен вызвать конструктор базового класса в конструктор. Поскольку он не может вызвать конструктор, если базовый класс находится в другой сборке, производный класс не компилируется.

+2

и как создать экземпляр вне вашей сборки? – tanascius

+4

@tanascius: добавьте заводской метод, например? – dtb

+0

Да, возможно, хотя и неясно, нужно ли OP создавать экземпляры вообще (он говорит только о * видимом *, только) ... +1 – tanascius

Смежные вопросы