2010-01-19 5 views
1

У меня есть 1 абстрактный класс, который вызывает статический метод, который до сих пор не требовал никаких параметров. Это недавно изменилось. На самом деле статический метод существует в другом классе и задает значение BaseMessageDirectory, но в этом примере ниже я упростил ...C# возможно иметь конструктор в абстрактном классе?

Итак, теперь я хочу создать свои производные классы таким образом, чтобы они могли инициализировать некоторые требуемые свойства в родительском классе во время наследования, возможно ли это?

Например ....

public abstract class ParentClass 
    { 
      protected string BaseMessageDirectory; 

      protected ParentClass(EnumOperationType operationType) 
      { 
       if(operationtype == 1) 
        { 
        BaseMessageDirectory = "one"; 
        } 
       else 
        { 
        BaseMessageDirectory = "two"; 
        } 
      } 
    } 

ответ

6

Да, вы можете определить конструктор, и все дочерние классы будут называть:

public class Child : ParentClass 
{ 
    public Child() : base(EnumOperationType.One) { ... } 
} 
+0

Так что, если я правильно понять вас - конструкторы в абстрактном классе становятся обязательными для дочерних классов? –

+1

Да .. Дочерние классы должны вызывать один из конструкторов базового класса. –

+0

Удивительная благодарность, это отличная помощь мне .... –