C# 4.0 如何确定一种方法;扩展方法是否为类型?“;

C# 4.0 如何确定一种方法;扩展方法是否为类型?“;,c#-4.0,C# 4.0,我想编写一个名为IsExtensionMethod的方法,其签名为: public bool IsExtensionMethod(object anObject, string method) { // if method was an extension for anObject return true else false } 我怎么做 我尝试了以下代码,但在某些情况下其返回值不正确: public bool IsExtensionMethod(object anObject, s

我想编写一个名为IsExtensionMethod的方法,其签名为:

public bool IsExtensionMethod(object anObject, string method)
{
    // if method was an extension for anObject return true else false
}
我怎么做

我尝试了以下代码,但在某些情况下其返回值不正确:

public bool IsExtensionMethod(object anObject, string method)
{
    return anObject.GetType().GetMethods().Where(item => item.Name == method).Count() == 0;
}

编译器在编译扩展方法时向扩展方法添加
CompilerServices.ExtensionAttribute
属性。查找此属性


您的可能重复是正确的。但是我想用上面提到的方法。您的缺点是在任何加载的程序集中搜索方法。有什么简单的方法吗?@Saeed Afshari,是的,你需要像编译器一样搜索扩展方法。如果这是您需要经常做的事情,您可以进行搜索,然后缓存结果。您甚至可以将其作为后编译过程来执行,并创建一个与dll一起使用的文件,如
mylibrary.dll.extensions.xml
或类似文件。