[英]How to pass a string to a VB.NET project's function that is referenced by a C# website?
我在VB.NET項目中具有以下功能。 該函數有很多重載,但我要使用的重載如下所示:
Public Function GetScalar(ByRef commandText As String, ByRef commandType As CommandType) As Object
我試圖按如下方式在C#MVC4網站中使用該功能:
object isMaintenanceMode = sqlTool.GetScalar("ProcedureName", CommandType.StoredProcedure);
我收到以下錯誤(這使我認為它正在查找正確的重載):
Error: The best overloaded method match for 'GetScalar(ref string, ref System.Data.CommandType)' has some invalid arguments
當我在GetScalar函數上單擊鼠標右鍵,然后選擇“轉到定義”時,Visual Studio會彈出“查找符號結果”窗口。 從這里我雙擊該函數,然后轉到該類中的函數列表(它是一個文件,其中附加了關鍵字[from metadata]-它實際上不在任何項目中):
public object GetScalar(ref string commandText, ref CommandType commandType);
public object GetScalar(SqlCommand foreignCommand, CommandType commandType);
public object GetScalar(ref string commandText, ref CommandType commandType, ref bool NoTimeOut);
所以我的問題是-您是否需要做一些特別的事情(除了添加對項目的引用之外)以在C#MVC4網站中使用VB.NET項目和功能? 另外,在將字符串傳遞給函數時我做錯了什么嗎? 我是C#和MVC的新手,我正在嘗試學習。
我注意到,如果我將null
作為字符串傳遞給函數,錯誤就會消失。 這顯然不是解決方案,因為我需要傳遞存儲過程名稱,但是我發現它表明我傳遞的字符串與CommandType
或函數本身相反,這是有問題的。 我還嘗試過創建一個字符串變量,在其中設置名稱,然后將該變量傳遞給函數。 這也不起作用。
任何想法或建議將不勝感激。 如果您需要更多信息,請告訴我。
您所看到的是C#中VB.Net函數的翻譯。 意思是ByRef
的c#版本是ref
。 由於調用項目在c#中,因此您會在c#中看到等效的函數定義版本。 您的方法:
Public Function GetScalar(ByRef commandText As String, ByRef commandType As CommandType) As Object
在C#中是:
public object GetScalar(ref string commandText, ref CommandType commandType);
要解決此問題,只需在參數中添加ref
關鍵字:
var pName = "ProcedureName";
var commandType = CommandType.StoredProcedure;
object isMaintenanceMode = sqlTool.GetScalar(ref pName, ref commandType);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.