別のソリューションに属する2つの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);
}
私はそれを実行すると、私はcalledType
がnullのNullReferenceException
を取得します。コメントによると、これはstatic
メソッドでのみ機能しますが、私が呼び出そうとしているメソッドはpublic void
です。
これを非静的メソッドで機能するように変更する方法はありますか?それともこれは別の方法でやるべきですか?私はVisual Studio 2015のC#で作業していますが、両方のプロジェクトは.NETです。
このメソッドが属するクラスをインスタンス化するのはなぜですか? – guijob
静的メソッドとインスタンス(非静的)メソッドの違いは何ですか?あなたは、この質問に答えるだけでなく、C#を学ぶために、2つの違いを理解する必要があります。 –
@EdPlunkett私が正しく理解していれば(私はそうではないかもしれませんが、私はC#の初心者です)、プログラムを実行するたびに静的は変わりません。 – AxxieD