私が疑うように、拡張メソッドのメソッド情報を取得できません。どうしましたか?拡張メソッドのMethodInfoを取得
_toStringMethod = typeof(ObjectExtensions).GetMethod("TryToString",
BindingFlags.Public | BindingFlags.Static);
私が疑うように、拡張メソッドのメソッド情報を取得できません。どうしましたか?拡張メソッドのMethodInfoを取得
_toStringMethod = typeof(ObjectExtensions).GetMethod("TryToString",
BindingFlags.Public | BindingFlags.Static);
Works for me。メソッドのクラス、名前、および修飾子がすべて正しいことを確認してください。
いずれの状況でも動作しない理由はありません。拡張メソッドは、定義されている静的クラスに属している点で、依然として「通常の」メソッドです。それはあなたがそれらにアクセスする唯一の方法です(ただし、あなたはもちろん普通にアクセスすることもできます)。私にとって
作品:
using System;
using System.Reflection;
public static class ObjectExtensions
{
public static string TryToString(this object x)
{
// Just guessing...
return x == null ? "" : x.ToString();
}
}
class Test
{
static void Main()
{
var method = typeof(ObjectExtensions).GetMethod
("TryToString", BindingFlags.Public | BindingFlags.Static);
// Prints System.String TryToString(System.Object)
Console.WriteLine(method);
}
}
は、あなたが失敗したと同様の短いが、完全な例を与えることができますか?
私は明示的に
typeof(MyAppNamespace.Extensions).GetMethod(...)
、それを入力する必要がので、それがEntityFrameworkの拡張クラスを使用した代わりに、私の拡張クラスの それは私だけの名前空間の衝突だった、あまりにも 私のコードで拡張メソッドを取得できませんでした
の代わりに:
typeof(Extensions).GetMethod(...)
もちろん、拡張メソッド自体とはまったく関係ありません。 – Noldorin
私のために働く... – LukeH