methodinfo相关内容

从 MethodInfo 构建一个委托?

谷歌搜索并登陆 SO 并阅读 this other question 是否可以从 MethodInfo 构建正确的委托如果您在编译时不知道参数的数量或类型? 关于此的更多信息:是否可以在不使用 Reflection.Emit 或类型生成器的情况下优雅地完成此操作? 这对我来说有点麻烦,因为 Delegate.CreateDelegate 要求我将正确的 Delegate 类型指定 ..
发布时间:2022-01-18 12:35:09 C#/.NET

检索在 Func 中执行的调用方法的名称

我想获取被委派为 Func 的方法的名称. Func函数 = x =>x.DoSomeMethod();字符串名称 = ExtractMethodName(func);//应该等于“DoSomeMethod" 我怎样才能做到这一点? -- 吹牛-- 使 ExtractMethodName 也适用于属性调用,让它返回该实例中的属性名称. 例如. Func函数 = x =>x. ..
发布时间:2022-01-18 12:29:46 C#/.NET

针对委托检查 MethodInfo

如何确定 MethodInfo 是否适合不同的委托类型? bool IsMyDelegate(MethodInfo 方法); 编辑:我得到了一个 MethodInfo 对象,想知道它是否适合委托接口.除了明显的 private bool IsValidationDelegate(MethodInfo 方法){变量结果 = 假;var 参数 = method.GetParameters(); ..
发布时间:2022-01-18 12:15:01 C#/.NET

当事先无法知道方法签名时,如何从 MethodInfo 创建委托?

我需要一个方法,它接受一个 MethodInfo 实例,该实例表示具有任意签名的非泛型静态方法,并返回一个绑定到该方法的委托,以后可以使用 Delegate.DynamicInvoke方法.我的第一次天真的尝试是这样的: 使用系统;使用 System.Reflection;课堂节目{静态无效主要(){var method = CreateDelegate(typeof (Console).Get ..
发布时间:2022-01-18 12:10:01 C#/.NET

我将如何使用反射来调用具有某个自定义属性的所有方法?

我有一个包含一堆方法的类. 其中一些方法由自定义属性标记. 我想一次调用所有这些方法. 我将如何使用反射来查找该类中包含此属性的所有方法的列表? 解决方案 获得方法列表后,您将使用 GetCustomAttributes 方法循环查询自定义属性.您可能需要更改 BindingFlags 以适应您的情况. var methods = typeof(MyClass).Get ..
发布时间:2022-01-13 18:10:51 C#/.NET

从 getter/setter 的 MethodInfo 中查找托管 PropertyInfo

我在运行时使用反射进行了一些类型分析.如果我有一个 MethodInfo 实例,我如何确定这是一个“真实"的方法还是一个属性的 getter/setter 方法?如果它是一个财产,我怎样才能找到它的托管 PropertyInfo? 解决方案 Ecma 335 指定(但不要求)编译器使用 get_/set_ 前缀(第 22.28 章).我不知道任何违反该建议的语言.让它变得简单: publ ..
发布时间:2021-12-26 14:37:35 C#/.NET

实现了类方法的MethodInfo,如何获取接口方法的MethodInfo?

我有一个接口方法的MethodInfo和一个实现的类的Type界面.我想找到实现接口方法的类方法的MethodInfo. 简单的method.GetBaseDefinition() 不适用于接口方法.按名称查找也不起作用,因为当显式实现接口方法时,它可以有任何名称(是的,在 C# 中不是). 那么,涵盖所有可能性的正确方法是什么? 解决方案 好的,我找到了一种方法,使用 Get ..
发布时间:2021-12-26 14:26:30 C#/.NET

你能得到一个 Func<T>(或类似的)来自 MethodInfo 对象?

我意识到,一般来说,使用反射会对性能产生影响.(实际上,我本人根本不喜欢反思;这是一个纯粹的学术问题.) 假设存在一个看起来像这样的类: public class MyClass {公共字符串 GetName() {返回“我的名字";}} 在这里忍受我.我知道如果我有一个名为 x 的 MyClass 实例,我可以调用 x.GetName().此外,我可以将 Func 变量设置为 x.Ge ..
发布时间:2021-12-26 14:24:27 C#/.NET

将从接口类型获得的MethodInfo对象转换为C#中实现类型上的相应MethodInfo对象?

我的问题是:如果我有一个MethodInfo对象,该对象是从接口类型获得的方法,并且我还有一个类型对象,该对象是实现该接口的类的,但是它使用一个显式实现,如何为该类中的实现方法正确获取相应的MethodInfo对象? 之所以需要这样做,是因为实现方法可以应用一些属性,我需要通过反射来找到它们,但是需要找到这些属性的类只有实现类的对象引用,以及该接口的Type对象(+对应的MethodInfo ..
发布时间:2021-05-16 19:32:28 C#/.NET

如何获得“何处"的正确方法信息?扩展方法

我试图使用反射返回正确的"Where"扩展方法,以构建自定义表达式.我尝试了几种方法,但最接近的方法抛出了异常:"mscorlib.dll中发生了'System.Reflection.AmbiguousMatchException'类型的未处理异常" 我知道这是因为在Enumrable类中定义了两个Where方法-但是我该如何仅使用的谓词来返回Where方法 Func. ..
发布时间:2021-05-06 19:47:45 C#/.NET

System.Reflection.MethodInfo.Invoke和多个线程

嗨,我该如何使用带有线程的参数调用System.Reflection.MethodInfo.Invoke(). 例如. 说我有一个方法,可以让您传递代表一个字符串的字符串.类名并动态调用相应的类方法,现在我想用线程调用此Methodinfo.invoke,我不知道如何执行此操作,因为我正在调用带有参数的invoke.代码片段被赋予了优先权.谢谢您的帮助 类型classType = o ..
发布时间:2021-04-18 20:44:48 C#/.NET

根据C#中的用户输入解析为原始类型

我执行此操作的代码使用反射和给出的字符串,而不是用户输入.最终,我希望用户能够说"float""2.0",并让计算机说,是的,这是计算机会说到的"float"或"bool""abc",这是没有听说过的布尔值. 将用户输入转换为原始类型名称就足够简单了,例如将"string"转换为"System.String",将"float"转换为"System.Single",等等.(尽管您知道的功能来做 ..
发布时间:2020-11-30 05:26:55 C#/.NET

为什么VS2010总是在MethodInfo.Invoke发生异常时中断?

我在MethodInfo.Invoke(o,null)周围进行了一次try/catch,并且VS2010设置为永不中断Exception,但是不幸的是,调试器仍在Invoked方法中中断.该方法是静态的,并且我已经安装了Phone Developer Beta. 这是错误还是开发人员错误? 谢谢! 解决方案 是的,未选中每个异常复选框,仅在这些Invoke异常时才会中断.所有其 ..
发布时间:2020-11-30 05:26:51 C#/.NET

从methodInfo.invoke获取返回值

如何从methodInfo.invoke获取返回值(int)? 让我感到困难的是,我使用字符串变量来调用该方法. 检查以下示例: if (Convert.ToBoolean(getParameterFromXML("issue", k, 1)) == true) { m = k + 1; MethodInfo methodInfo = typeof(frmDet ..
发布时间:2020-11-30 05:26:48 其他开发

通过MethodInfo调用方法

我想调用具有特定属性的方法. 因此,我循环遍历所有程序集和所有方法以查找具有我的属性的方法.工作正常,但是当我只有MethodInfo时如何调用某个方法. AppDomain app = AppDomain.CurrentDomain; Assembly[] ass = app.GetAssemblies(); Type[] types; foreach (Assembly a in ass ..
发布时间:2020-11-30 05:24:13 C#/.NET

引用所需的重载泛型方法

给予 public Class Example { public static void Foo(int ID){} public static void Foo(int ID){} } 问题: 将其称为“重载泛型方法"是否正确? 如何在创建MethodInfo对象时指定任一方法? Type exampleType = Type.GetType ..
发布时间:2020-11-13 05:00:29 C#/.NET

.NET MethodInfo缓存是否可以清除或禁用?

每个 MSDN ,调用反映的Type.GetMethods()存储MemberInfo缓存中的方法信息,因此不必再次执行昂贵的操作. 我有一个应用程序可以扫描程序集/类型,寻找与给定规范匹配的方法.问题在于,由于.NET挂接到方法元数据上,因此内存消耗显着增加(尤其是使用大量引用程序集时). 有什么方法可以清除或禁用此MemberInfo缓存吗? 解决方案 我不这么认为.一种技 ..
发布时间:2020-09-12 21:10:01 C#/.NET

如何通过反射找到重载方法

这是一个与我之前问过的另一个问题。我有一个重载的方法: public void Add(SomeType some){} public void Add(AnotherType another){} 通过反射找到每种方法?例如如何通过反射获取添加(SomeType一些)方法?你能帮我吗? 解决方案 这里的技 ..
发布时间:2018-04-21 20:38:37 C#/.NET