VB.Net中的可选参数

时间:2017-06-15 18:39:52

标签: asp.net vb.net

情况如下。我的ASP.Net应用程序的解决方案有3个项目A,B和C. B包含一个函数(例如:testfunction),由A和C中的Pages使用。现在对于项目C的某个要求,我需要对测试函数进行更改。为了实现这一点,我添加了一个带有从C传递的默认值的可选参数。我编译了我的代码并将其移动到服务器,这是来自B和C的Dll。在我的测试中,需求工作正常。但是当涉及项目A调用测试函数的应用程序部分被调用时,它会出现错误(找不到方法)。我无法弄清楚为什么A应该打破。我只是从A重新编译DLL并将其移动到服务器并且错误消失了。

我的问题是当我没有改变我从A调用的方式时为什么要编译A的DLL?

1 个答案:

答案 0 :(得分:0)

更多的是猜测,但是我认为这是因为dll“ A”搜索特定的方法“ signiture”,例如:

B.testfunction(Integer,String)

不是

B.testfunction(Integer,String,[String])

那是另一种方法。

您可以通过保留原来的方法并添加新的重载方法来进行测试:

Public Overloads Sub testfunction(p1 As Integer, p2 As String)
    testfunction(p1, p2, Nothing)
End Sub
Public Overloads Sub testfunction(p1 As Integer, p2 As String, p3_notOptional As String)
    'Do the thing.
End Sub

如果正确,则“ A”不再需要重新编译。