我有一个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中创建我的会议。
答案 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...
}