VB.Net早期绑定类有条件地变量

时间:2014-07-14 21:09:50

标签: .net vb.net class inheritance

我有一个VB.Net应用程序,它根据条件为变量分配两个类中的一个。目前我正在以非常直接的后期绑定来做这件事。我正在寻找可能提高性能的任何其他解决方案。

简化示例,我有CAT和DOG类,它们都继承自ANIMAL类。我的代码如下所示:

Dim Pet as Object
Dim Allergic as Boolean = True

If Allergic then 
    Pet = New DOG
Else
    Pet = New CAT
End If

If Allergic then 
   Pet.Bark
   Pet.Fetch
Else
   Pet.Meow
   Pet.UseLitterBox
End Else

无论如何要做到这一点,我可以提前绑定到指定的ANIMAL子类?

1 个答案:

答案 0 :(得分:0)

不,你不能这样做。 VB.NET要求在编译时知道类型。

通常,您应该尝试通过多态来处理这个问题。你不应该在Meow类上放置BarkAnimal(这会违反所谓的Liskov Substitutiton原则,因为Meow不适合Dog {1}},反之亦然)。

相反,你需要一个名为Animal.MakeNoise的方法,Dog会通过吠叫覆盖,而Cat会被喵喵覆盖。通过这种方式,MakeNoise 抽象远离要制作的特定噪音的细节。