2016-03-25 15 views
0

私はcustIdとroomNumberという2つのプロパティを持つCalIntEventとCalExtEventという2つのサブクラスを持っています。クラスはCalEventから継承します。実行時のオブジェクトタイプを決定する - C#

私は以下のコードを持っていますが、派生クラスのプロパティにアクセスすることはできません。どのようにこれらにアクセスできますか? custId以来

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

CalExtEvent上で定義されている、あなたはタイプCalEventの変数からアクセスすることはできません。

CalExtEventの構築時にそのプロパティを初期化することができます。ここに例があります:

newEvent = new CalExtEvent() { custId = 2}; 
関連する問題