3

いくつかの.netDLLライブラリがあります。このDLLには、次のような同じ名前の2つのメソッドを持つクラスが含まれています。

void b()
{

}

bool b()
{

}

C#では不可能ですが、内部的には問題ないようです。そのようなライブラリを追加するときに、コードから1つのメソッドを呼び出すにはどうすればよいですか?

最も簡単な方法が必要です。リフレクションを使用しても問題ないことはわかっていますが、他にもっと簡単な方法はありますか?

*編集*

ライブラリのメタデータでこれを取得しています:

#region Assembly XXXX.dll, v xxxx
// C:\....................
#endregion


namespace XXXX.YYYYY
{
    public class a : IDisposable
    {

        .
        .
        .
        .
        .
        public void b();
        public bool b();
        .
        .
        .
        .
        public void Dispose();
    }
}
4

1 に答える 1

3

ああ、それはひどいです。C#からそれを呼び出すことができる唯一の方法は、リフレクションを介することです。おそらくGetMethods()、配列から必要なものを使用して見つける必要があります(GetMethod()オーバーロードはそれを気に入らない場合があります)。

を取得したら、を使用するMethodInfoInvoke、を使用Delegate.CreateDelegateして、再利用できる型付きデリゲートを取得できます。どちらが望ましいかは、どれくらいの頻度で呼び出すかによって異なります。

于 2013-02-25T11:32:54.927 に答える