2015-12-27 5 views
4

Я работаю с кодом, в котором есть абстрактный класс, например:Как доступ к свойствам унаследованных классов от абстрактного класса

public abstract class AbstractClass 
{ 
    ... 
} 

и есть наследуются классы от AbstractClass. Один объект создается в зависимости от ввода пользователем одного из унаследованных классов. Каждый наследуется класс имеет свои собственные свойства:

class classOne : AbstractClass 
    { 
     ... 
     public int A { get; set;} 
     public int B { get; set;} 
     public int C { get; set;} 
     ... 
    } 


class classTwo : AbstractClass 
    { 
     ... 
     public int D { get; set;} 
     public int E { get; set;} 
     ... 
    } 

... Say Я хочу использовать функции в этом коде, и я знаю, какой тип объекта будет возвращен. Как изменить свойства выходного объекта, так как программа написана так, что класс вывода определяется только при запуске программы?

ответ

4

Если вы знаете, какой конкретный тип, который вы» будете иметь, вы всегда можете отдать свой объект:

var concreteObject = myObj as classOne; 

Или, если вы не знаете, какой тип объекта вы будете иметь, вы можете проверить его, а затем бросил:

if (myObj is classOne) { 
    // Cast to classOne and use 
} else if (myObj is classTwo) { 
    // Cast to classTwo and use 
} 

Надеюсь, что это поможет ответить на ваш вопрос!

1

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

(SomeType)instance 
Смежные вопросы