Посмотрите здесь (дизайн абстрактного класса): http://msdn.microsoft.com/en-us/library/ms229047.aspx
В нем говорится:
(1) Не определяйте общедоступные или защищенные внутренние (Protected Friend в Visual Basic) конструкторы в абстрактных типах.
В C# мы не можем создать экземпляр абстрактного класса. Итак, имеет ли все еще значение определение открытых конструкторов для абстрактных классов в C#? Или не писать открытые конструкторы для абстрактных классов из-за семантического значения?
Там также говорится:
(2) Определите защищенный или внутренний конструктор в абстрактных классах.
Определить внутренние конструкторы ?? В (1) он говорит нам, что отсутствие определения внутренних защищенных конструкторов связано с тем, что «конструкторы с общедоступной или защищенной внутренней видимостью предназначены для типов, которые могут быть созданы». Разве определение внутренних конструкторов для абстрактных классов не нарушает правила в (1)?
Заранее спасибо. :)