【发布时间】:2015-05-20 06:45:13
【问题描述】:
假设我有一些模型如下:黑色、绿色、蓝色、红色。
我有一个接收对象的函数,我想尝试将对象转换为适当的模型。
现在我有这样的代码:
Public Sub SetData(ByVal obj As Object)
If TryCast(obj, black) IsNot Nothing Then
Dim m As Black = TryCast(obj, black)
......
ElseIf TryCast(obj, green) IsNot Nothing Then
Dim m As green = TryCast(obj, green)
......
ElseIf TryCast(obj, blue) IsNot Nothing Then
Dim m As blue = TryCast(obj, blue)
......
ElseIf TryCast(obj, red) IsNot Nothing Then
Dim m As red = TryCast(obj, red)
......
Else
......
End If
End Sub
似乎代码效率不高,并且消耗更多内存并使用更多 CPU 进行双重 trycast。如何简化这段代码,例如检查trycast但同时得到结果模型,而不需要双重trycast过程?
【问题讨论】:
-
理想情况下,您的所有模型都应该继承自同一个基础并具有
MustOverride(或至少是Overridable)方法,您可以调用该方法然后应用正确的逻辑 - 而不是而不是让这个方法尝试找出它处理的对象类型,然后在里面也有特定类型的代码。 -
是的……好点……我想我需要再考虑一下设计……
标签: vb.net simplify simplification