c# - 反射扩展法

标签 c# reflection

我有一个字符串类的扩展方法

public static bool Contains(this string original, string value, StringComparison comparisionType)
{
   return original.IndexOf(value, comparisionType) >= 0;
}

但是无法通过反射得到方法

IEnumerable<MethodInfo> foundMethods = from q in typeof(string).GetMethods()
                                       where q.Name == "Contains"
                                       select q;

foundMethods为什么只获取Contains(string)方法?其他 Contains 方法在哪里?

最佳答案

它不是在 String 类中声明的方法,所以 GetMethods 看不到它。扩展方法在范围内的事实取决于声明它的命名空间是否被导入,而反射对此一无所知。请记住,扩展只是静态方法,带有使它们看起来像是实例方法的语法糖。

关于c# - 反射扩展法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8562504/

相关文章:

java - 通过 CGLIB 代理时方法注释为 null

reflection - 如何使用 F# 反射库?

java - 反射和数组

javascript - 如何强制 Razor 检查 JavaScript 中 TextBox 的验证

c# - PInvoke - 找不到指定的模块。如何检查缺少的依赖项?

c# - 有没有一种方法可以在 C# 的代码中定义多行 XML 而不必更改 "to ""?

c# - 方法调用的所有引用的集成测试

c# - 创建用于验证的属性并更改参数值

c# - 混合交互行为给出 "points to immutable instance"错误

ios - Swift:如何获取具有可用数组 MirrorType 的数组元素类型