jjzjj

methodInfo

全部标签

c# - 如何使用强类型反射查找泛型类方法的 MethodInfo?

我想从具有仅在运行时已知的类型参数的泛型类中获取方法的MethodInfo。下面是我如何从非泛型类中获取泛型方法的MethodInfo:classMyClass{publicvoidMyMethod(Targ){}}staticMethodInfoResolve(Typetype){Expression>lambda=(c,a)=>c.MyMethod(a);MethodCallExpressioncall=lambda.BodyasMethodCallExpression;returncall.Method//GetMethodInfoforMyClass.MyMethod.GetG

c# - 声明类型的 MethodInfo 相等性

我需要检查两个MethodInfo之间的相等性。它们实际上是完全相同的MethodInfo,除了ReflectedType(也就是说,DeclaringType是相同的,方法实际上应该具有相同的主体)。有多种方法可以做到这一点,但我正在寻找最有效的方法。现在我有:publicstaticboolAreMethodsEqualForDeclaringType(thisMethodInfofirst,MethodInfosecond){first=first.ReflectedType==first.DeclaringType?first:first.DeclaringType.GetMe

c# - 如何使用反射获取泛型类型的扩展方法

从互联网上的各种来源,我收集了以下功能:publicstaticNullableTryParseNullable(thisNullablet,stringinput)whereT:struct{if(string.IsNullOrEmpty(input))returndefault(T);Nullableresult=newNullable();try{IConvertibleconvertibleString=(IConvertible)input;result=newNullable((T)convertibleString.ToType(typeof(T),CultureInfo

c# - 如何用反射读取方法体

是否有可能找到有关带反射的方法体的任何信息?如何? 最佳答案 您可以使用MethodInfo.GetMethodBody.这让您可以访问任何您想要的东西...如果您乐于自己完成IL等。有可能MonoCecillibrary会提供更多帮助——我自己没用过。 关于c#-如何用反射读取方法体,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4986563/

c# - 如何使用反射调用通用扩展方法?

我写了扩展方法GenericExtension。现在我想调用扩展方法Extension。但是methodInfo的值始终为null。publicstaticclassMyClass{publicstaticvoidGenericExtension(thisForma,stringb)whereT:Form{//code...}publicstaticvoidExtension(thisForma,stringb,Typec){MethodInfomethodInfo=typeof(Form).GetMethod("GenericExtension",new[]{typeof(strin

c# - 如何从 Action 委托(delegate)创建 MethodInfo

我正在尝试开发一个NUnit插件,它从一个包含Action委托(delegate)列表的对象动态地将测试方法添加到套件中。问题是NUnit似乎严重依赖反射来完成工作。因此,似乎没有简单的方法可以将我的Action直接添加到套件中。相反,我必须添加MethodInfo对象。这通常会起作用,但Action委托(delegate)是匿名的,因此我必须构建类型和方法来完成此操作。我需要找到一种更简单的方法来执行此操作,而无需使用Emit。有谁知道如何轻松地从Action委托(delegate)创建MethodInfo实例? 最佳答案 您是否

c# - 如何获取通用扩展方法的 MethodInfo?

我有一个IEnumerable,我想调用Enumerable.Contains反射法。我只是在努力使语法正确。这是我目前拥有的:varcontainsMethod=typeof(Enumerable).GetMethod("Contains",new[]{typeof(IEnumerable),typeof(T)});这只是返回一个null。获取MethodInfo的正确方法是什么?? 最佳答案 WhatisthecorrectwaytogettheMethodInfo?您必须找到通用方法——不幸的是这有点麻烦——然后用适当的参数构

c# - 识别 MethodInfo 实例是否是属性访问器

我正在使用CastleDynamicProxy编写装饰代理.我需要代理的拦截器只拦截属性写入(而不是读取),因此我正在检查方法的名称:publicvoidIntercept(IInvocationinvocation){if(invocation.Method.Name.StartsWith("set_"){//...}invocation.Proceed();}现在这工作正常,但我不喜欢我的代理对属性的实现方式有深入了解的事实:我想用类似于以下内容的方法替换方法名称检查:if(invocation.Method.IsPropertySetAccessor)不幸的是,我的Google-

c# - 获取静态类的静态方法的MethodInfo

我正在尝试获取静态类中静态方法的MethodInfo。运行以下行时,我只得到基本的4个方法,ToString、Equals、GetHashCode和GetType:MethodInfo[]methodInfos=typeof(Program).GetMethods();如何获取此类中实现的其他方法? 最佳答案 varmethods=typeof(Program).GetMethods(BindingFlags.Static|BindingFlags.Instance|BindingFlags.Public|BindingFlags.

c# - 如何确定 MethodInfo 是否是基方法的重写

我正在尝试确定我从类型实例上的GetMethod调用中获得的MethodInfo对象是由该类型还是由其基础实现的。例如:Foofoo=newFoo();MethodInfomethodInfo=foo.GetType().GetMethod("ToString",BindingFlags|Instance);ToString方法可以在Foo类中实现,也可以不实现。我想知道我是否获得了foo实现?RelatedquestionIsitpossibletotellifa.NETvirtualmethodhasbeenoverrideninaderivedclass?