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

乔·穆恩

我有一个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子类?

本·亚伦森

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

通常,您应该尝试通过多态性来解决这个问题。你不应该把两者MeowBarkAnimal类(这违反了所谓的里氏Substitutiton原则,因为Meow是不恰当的Dog,反之亦然)。

取而代之的是,您需要一个名为之类的方法Animal.MakeNoise,其中aDog将被吠叫覆盖,而aCat将被喵覆盖。这样,就MakeNoise 抽象出了要制造的特定噪音的细节。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有条件地退出或继续在vb.net中循环

来自分类Dev

使用后期绑定的Vb.net确定Excel单元格是否具有条件格式颜色

来自分类Dev

遍历Hashtable并有条件地删除VB.NET中的条目的最佳方法

来自分类Dev

vb.net:怎么样?或者 ??vb.net在C#中有条件吗?

来自分类Dev

通过VB6有条件地格式化Excel文档(带有覆盖格式的问题)

来自分类Dev

ACE有条件地更改密钥绑定

来自分类Dev

在AngularJS中有条件地绑定数据

来自分类Dev

在WebApi中与Ninject有条件地绑定

来自分类Dev

如何在.net中有条件地继承类

来自分类Dev

有条件地定义容器类的方法

来自分类Dev

如何有条件地定制Application类?

来自分类Dev

在React中有条件地设置活动类

来自分类Dev

有条件地选择要继承的类

来自分类Dev

在React中有条件地设置活动类

来自分类Dev

有条件地定义容器类的方法

来自分类Dev

仅添加类名,有条件地

来自分类Dev

有条件地覆盖表上的 CSS 类

来自分类Dev

有条件地包含ansible角色的变量文件

来自分类Dev

如何使用EJS有条件地显示变量

来自分类Dev

如何有条件地选择变量?

来自分类Dev

有条件地在变量前加上斜杠

来自分类Dev

有条件地按组总结几个变量

来自分类Dev

有条件地在python代码中添加变量

来自分类Dev

有条件地引用实例变量Ruby / Rails

来自分类Dev

使用dplyr有条件地更新多个变量

来自分类Dev

VBA 有条件地为变量赋值

来自分类Dev

在计算中有条件地替换变量

来自分类Dev

如何使用 Angular 7 中的模块有条件地绑定 ngFor 循环中的类或属性值?

来自分类Dev

有条件地忽略授权.NET Core 3.1