我無法獲得擴展方法的方法信息,因爲我懷疑。怎麼了?獲取擴展方法的MethodInfo
_toStringMethod = typeof(ObjectExtensions).GetMethod("TryToString",
BindingFlags.Public | BindingFlags.Static);
我無法獲得擴展方法的方法信息,因爲我懷疑。怎麼了?獲取擴展方法的MethodInfo
_toStringMethod = typeof(ObjectExtensions).GetMethod("TryToString",
BindingFlags.Public | BindingFlags.Static);
適合我。只要檢查你的方法類,名稱和修飾符都是正確的。
作爲一個說明,沒有任何理由不應該在任何情況下工作。擴展方法仍然是「常規」方法,因爲它們屬於定義的靜態類。只有訪問它們的方式不同(當然,您仍然可以訪問它們)。
工作對我來說:
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);
}
}
你能給它失敗了類似短,但完整的例子嗎?
我無法得到我的代碼擴展方法太 這只是我的一個命名空間衝突,而不是我的推廣類 它使用的EntityFramework的擴展類,所以我必須明確地鍵入
typeof(MyAppNamespace.Extensions).GetMethod(...)
代替:
typeof(Extensions).GetMethod(...)
是的,絕對沒有任何關係的擴展方法本身。 – Noldorin 2009-06-12 16:58:15