.NETでオーバーロードされたメソッドを呼び出すためにReflectionを使用する方法
2023-09-02 17:16:50
質問
.NET (2.0) でリフレクションを使用してオーバーロードされたメソッドを呼び出す方法はありますか。 私は、共通の基本クラスから派生したクラスを動的にインスタンス化するアプリケーションを持っています。 互換性のために、この基本クラスは同じ名前の2つのメソッドを含んでいます、 1つはパラメータ付き、もう1つはパラメータなしです。 Invokeメソッドでパラメータなしのメソッドを呼び出す必要があります。 今、私が得るのは、曖昧なメソッドを呼び出そうとしていることを伝えるエラーだけです。
はい、私は ができました。 はオブジェクトを私の基底クラスのインスタンスとしてキャストし、必要なメソッドを呼び出すだけです。 最終的にそれは は が起こるでしょうが、今は内部的な複雑さがそれを許さないでしょう。
どんな助けでも偉大です! ありがとうございます。
どのように解決するのですか?
どの方法で解決するかを指定する必要があります。
class SomeType
{
void Foo(int size, string bar) { }
void Foo() { }
}
SomeType obj = new SomeType();
// call with int and string arguments
obj.GetType()
.GetMethod("Foo", new Type[] { typeof(int), typeof(string) })
.Invoke(obj, new object[] { 42, "Hello" });
// call without arguments
obj.GetType()
.GetMethod("Foo", new Type[0])
.Invoke(obj, new object[0]);
関連
-
[解決済み】警告。同じ依存アセンブリの異なるバージョン間で競合が見つかりました。
-
[解決済み] Html.BeginForm()にCSSクラスを追加する。
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] async」と「await」の使い方とタイミング
-
[解決済み] リフレクションを使ってジェネリックメソッドを呼び出すにはどうしたらいいですか?
-
[解決済み] メソッドを廃止または非推奨としてマークする方法は?
-
[解決済み] .NETでC#オブジェクトをJSON文字列に変換するには?
-
[解決済み] Java のメソッド名を文字列で指定した場合、どのように呼び出すのですか?
-
[解決済み] リフレクションを使ってプライベートメソッドを呼び出すには?
-
[解決済み】Reflection。パラメータを指定してメソッドを呼び出す方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Microsoft.Practices.ServiceLocationはどこから来たのですか?
-
[解決済み] VS2017/2015 で .xproj ファイルを開く方法
-
[解決済み] Html.BeginForm()にCSSクラスを追加する。
-
[解決済み] Visual Studioの "ターゲットフレームワーク "が見つからない
-
[解決済み] BasicHttpsBindingとWsHttpBinding with Transport securityの違いは何ですか?
-
[解決済み] リファレンスの追加にSystem.Web.Mvcが表示されないのはなぜですか?
-
[解決済み] ASP.NET control to render a <div>
-
[解決済み] 'Newtonsoft.Json' には 'Microsoft.CSharp' の依存関係がすでに定義されています。
-
[解決済み] LINQ: フィルタリング基準で SingleOrDefault と FirstOrDefault() を使用する場合
-
[解決済み] MemoryStreamから文字列を取得する方法は?