Допустим, у меня есть класс:Как получить явные типы детей в собственности
class AbstractPerson{
AbstractAttribute attr {get; set;}
}
Теперь в детском классе AbstractPerson, я хочу использовать Аттрибут но, в частном случае, например, так:
class Pilot: AbstractPerson {
...
(attr as SpecialAttribute).pilotID;
...
}
Потому что я не хочу, чтобы сделать это, каждый раз, когда я называю attr
, я хочу иметь свойство в Pilot
, что дает обратно typecasted версию attr
, но я не получаю эту работу.
Таким образом, это не работает:
class Pilot: AbstractPerson {
AbstractAttribute attr {
get
{
return (attr as SpecialAttribute);
}
set;
}
}
даже возможно ли это?
*** Я знаю, что по соглашению «attr» должно быть в PascalCase, я просто забыл об этом примере. На самом деле Человек является Контроллером и Аттрем.
Ну, вы возвращаете 'attr' как' SpecialAttribute', но поскольку свойство все еще имеет тип 'AbstractAttribute', вы вернетесь туда, откуда вы начали.У вас может быть свойство * different *, например 'SpecialAttribute attrSpecial {get {return attr as SpecialAttribute; }} ', а затем используйте это внутри' Pilot'. – Corak
Да, ты прав. Я имею в виду наличие другого свойства, но тогда у меня не было бы свойства ONE, достаточного для двух вещей: действовать как особая вещь, но все же предоставить всю абстрактную вещь, которую она имеет. Я думаю, что решение дженериков лучше. Спасибо! – ruffy