这是我项目中的类的简化版本。由于Bonus在每个函数中的计算方式完全相同,我想删除此处出现的明显代码重复,并将三个不同的函数合二为一。但是我不确定如何提供这个新函数需要的论据。
例如,我目前只是从代码
传递这样的参数lblVolumeBonus.Content = TestClass.VolumeBonusAmountStore(红利)。
我认为我必须基本上改变这种逻辑并用类似
的方式调用它lblVolumeBonus.Content = TestClass.VolumeBonusAmountStore(BonusTrackerBO.StoreBonus)
但我不确定正确的语法或我是否在正确的轨道上。
有人可以帮我找到正确的方向吗?
Public Class TestClass
Public Shared Function StoreBonus(ByVal bonus As BonusTrackerBO.StoreBonus) As Double
Dim myBonus As Double = bonus.TicketAmount
Return myBonus * 5
End Function
Public Shared Function DistrictBonus(ByVal bonus As BonusTrackerBO.DistrictBonus) As Double
Dim myBonus As Double = bonus.TicketAmount
Return myBonus * 5
End Function
Public Shared Function CompanyBonus(ByVal bonus As BonusTrackerBO.CompanyBonus) As Double
Dim myBonus As Double = bonus.TicketAmount
Return myBonus * 5
End Function
End Class
编辑:这可能没有什么区别,但我应该明确表示等式中还有其他因素(我只是想保持简单)。当奖金还有其他回调时,答案也是一样的,例如bonus.MaximumAmount,bonus.MinimumAmount?奖金对象有5个回调,金额根据商店,区域或公司要求而有所不同。
答案 0 :(得分:2)
为什么不简单
Public Shared Function GiveBonus(ByVal TicketAmount As Double) As Double
Return TicketAmount * 5
End Function
lblVolumeBonus.Content = TestClass.VolumeBonusAmountStore(bonus.TicketAmount)
答案 1 :(得分:1)
怎么样:
Public Shared Function GetBonus(ByVal bonus as Double) As Double
Return bonus * 5
End Function
奖金为bonus.TicketAmount
。或者如果它们都从BaseBonusClass
等基类继承。
Public Shared Function GetBonus(ByVal bonus as BaseBonusClass) As Double
Return bonus.TicketAmount * 5
End Function
修改或尝试使用泛型
Public Shared Function GetBonus(Of T As BaseBonusClass)(ByVal bonus as T) As Double
Return bonus.TicketAmount * 5
End Function