我有兩個屬於單獨解決方案的Windows窗體應用程序。我試圖從另一箇中調用一個方法。我從我嘗試訪問的解決方案(Sol1)創建了一個類庫,並在我正在運行的項目(Sol2)中引用它,但是我無法訪問該方法。在另一個項目和名稱空間中調用非靜態方法
我發現這是solution建議做這種方式:
string s = string InvokeStringMethod3 ("TheProject", "TheNamespace", "TheClass", "TheMethod");
public static string InvokeStringMethod3(
string assemblyName,
string namespaceName,
string typeName,
string methodName)
{
Type calledType = Type.GetType(namespaceName + "." + typeName + "," + assemblyName);
String s = (String)calledType.InvokeMember(
methodName,
BindingFlags.InvokeMethod | BindingFlags.Public |
BindingFlags.Static,
null,
null,
null);
}
當我運行它,我得到一個NullReferenceException
其中calledType
爲空。根據評論,這將只適用於static
方法,但我試圖調用的方法是public void
。
有沒有辦法將其修改爲適用於非靜態方法?或者應該以另一種方式做到這一點?我正在Visual Studio 2015中使用C#,並且這兩個項目都是.NET。
爲什麼不直接實例化這個方法所屬的類? – guijob
你明白靜態方法和實例(非靜態)方法有何區別嗎?你需要了解兩者之間的區別,不僅僅是爲了回答這個問題,而是爲了學習C#。 –
@EdPlunkett如果我理解正確(我可能不會,我是C#的新手),但每次運行程序時靜態都保持不變,實例不會。 – AxxieD