如何在单个类中实现两个相同的方法

时间:2017-02-02 02:37:48

标签: vb.net

我有一个Class,BettingAgency,以及两个TAB和Ladbrokes实例。麻烦的是,虽然它们具有相同的方法签名,但每种方法的实现方式都不同。我不希望将实例实现为单独的类,因为我有一个维护BettingAgencies列表的DataGrid。看似非常普遍的需求。在VB.NET中是否有我的问题的解决方案。

我有解决这个问题的方法。我在上面提到的方法之一是GetMeetings。 TAB和Ladbrokes提供了Web API,每个都略有不同。我已经创建了类TAB.vb和Ladbroke.vb专门用于处理具有继承的BettingAPI类的WEb API。我还有一个带有Sub New的Meetings类,我将BettingAPIs对象传递给(TAb或Ladbrokes)。因此,我通过致电BettingAPIs.GetMeetings在Meeton的New Sub中创建我的会议。

3 个答案:

答案 0 :(得分:2)

从OOP的角度来看,你应该让BettingAgency成为一个基类,让TAB和Ladbrokes都扩展它。然后,每个都可以共享父类的所有模型/视图/控件属性,但是您可以覆盖需要以不同方式工作的方法或getter。所以你可能有一个名为scrapeSite()的函数在所有子类中被覆盖,但其他一切都是相同的。

答案 1 :(得分:0)

看起来你可以在VB.NET中重载方法

https://msdn.microsoft.com/en-us/library/ms973896.aspx

因此,通过传入不同的参数,您可以让他们在保持方法签名的同时做不同的事情。

你应该能够通过这样做来实现你想要的,但更正确的做法是创建一个基类并扩展该类。

https://msdn.microsoft.com/en-us/library/5x4yd9d5(v=vs.90).aspx

这样做可以覆盖更具体的类的方法。

答案 2 :(得分:0)

您的方法是否包含发件人对象:

 public void myMethod(object sender, Event Args e){
if (sender.someproperty == "TAB") do something...
}

如果不只是添加自定义var:

 public void myMethod(whoSentIt){
if(whosentIt == "Tab") do something...
}