2016-03-25 4 views
0

У меня есть 2 подкласса, называемых CalIntEvent и CalExtEvent, которые имеют два свойства custId и roomNumber. Классы наследуют от CalEvent.Определить тип объекта во время выполнения - C#

У меня есть код ниже, но я не могу получить доступ к свойствам производного класса. Как мне получить к ним доступ?

CalEvent newEvent; 
while (userAns != '1' && userAns != '2') 
{ 
    Console.WriteLine("\nPlease enter 1 for Internal Event or 2 for External Event: "); 
    userAns = Console.ReadKey().KeyChar; 

} 

if (userAns == '1') 
{ 
    newEvent = new CalIntEvent(); 

} 
else 
{ 
    newEvent = new CalExtEvent(); 
    newEvent.custId = 2;// issue is here<<<<<< 
} 
newEvent.location = GetUserInput(Field.Location, "Please enter a location"); 
newEvent.title = GetUserInput(Field.Title, "Please enter a title"); 
newEvent.description = GetUserInput(Field.Description, "Please enter a description"); 
+0

Почему вы не передаете 'custId' через конструктор' CalExtEvent'? –

+0

Или инициализируйте его при создании объекта следующим образом: 'newEvent = new CalExtEvent() {custId = 2};' –

ответ

2

Поскольку custId определяется на CalExtEvent, то вы не можете получить доступ к нему из переменной типа CalEvent.

Что вы можете сделать, это инициализировать это свойство при построении CalExtEvent. Вот пример:

newEvent = new CalExtEvent() { custId = 2};