让我像这样建模我的问题。
我有一个层次结构,其中Dog
,Cat
,Bird
是抽象类Animal
的子类。 Bird
有一个新事件BirdEvent
,而Animal
中没有(也不应该)。
我有一个类MyObject
,其字段为Animal
(利用多态性)。假设MyObject
的某些实例会将Animal
字段填充Bird
,其他Cat
填充Dog
或Animal
。如果Bird
字段包含BirdEvent
的实例,我想注册其Animal
。但由于字段属于BirdEvent
类型,因此显然不能有MyObject myObject= new Myobject();
if (myObject.Animal is Bird)
{
myObject.Animal.BirdEvent += reactToBirdEvent;
}
。
<script>
$("facebook.com").on("click",function(){
window.open('www.facebook.com','_blank');
});
</script>
有没有办法可以到达BirdEvent?或者很可能,我的设计在我看不到的地方有缺陷吗?
答案 0 :(得分:4)
您可cast到Bird
:
MyObject myObject= new Myobject();
if (myObject.Animal is Bird)
{
((Bird)myObject.Animal).BirdEvent += reactToBirdEvent;
}
答案 1 :(得分:2)
Bird
Bird myBird = myObject.Animal as Bird;
if (myBird != null)
{
myBird.BirdEvent += reactToBirdEvent;
}