methodinfo相关内容
谷歌搜索并登陆 SO 并阅读 this other question 是否可以从 MethodInfo 构建正确的委托如果您在编译时不知道参数的数量或类型? 关于此的更多信息:是否可以在不使用 Reflection.Emit 或类型生成器的情况下优雅地完成此操作? 这对我来说有点麻烦,因为 Delegate.CreateDelegate 要求我将正确的 Delegate 类型指定
..
我想获取被委派为 Func 的方法的名称. Func函数 = x =>x.DoSomeMethod();字符串名称 = ExtractMethodName(func);//应该等于“DoSomeMethod" 我怎样才能做到这一点? -- 吹牛-- 使 ExtractMethodName 也适用于属性调用,让它返回该实例中的属性名称. 例如. Func函数 = x =>x.
..
如何确定 MethodInfo 是否适合不同的委托类型? bool IsMyDelegate(MethodInfo 方法); 编辑:我得到了一个 MethodInfo 对象,想知道它是否适合委托接口.除了明显的 private bool IsValidationDelegate(MethodInfo 方法){变量结果 = 假;var 参数 = method.GetParameters();
..
我需要一个方法,它接受一个 MethodInfo 实例,该实例表示具有任意签名的非泛型静态方法,并返回一个绑定到该方法的委托,以后可以使用 Delegate.DynamicInvoke方法.我的第一次天真的尝试是这样的: 使用系统;使用 System.Reflection;课堂节目{静态无效主要(){var method = CreateDelegate(typeof (Console).Get
..
我有一个包含一堆方法的类. 其中一些方法由自定义属性标记. 我想一次调用所有这些方法. 我将如何使用反射来查找该类中包含此属性的所有方法的列表? 解决方案 获得方法列表后,您将使用 GetCustomAttributes 方法循环查询自定义属性.您可能需要更改 BindingFlags 以适应您的情况. var methods = typeof(MyClass).Get
..
我在运行时使用反射进行了一些类型分析.如果我有一个 MethodInfo 实例,我如何确定这是一个“真实"的方法还是一个属性的 getter/setter 方法?如果它是一个财产,我怎样才能找到它的托管 PropertyInfo? 解决方案 Ecma 335 指定(但不要求)编译器使用 get_/set_ 前缀(第 22.28 章).我不知道任何违反该建议的语言.让它变得简单: publ
..
我有一个接口方法的MethodInfo和一个实现的类的Type界面.我想找到实现接口方法的类方法的MethodInfo. 简单的method.GetBaseDefinition() 不适用于接口方法.按名称查找也不起作用,因为当显式实现接口方法时,它可以有任何名称(是的,在 C# 中不是). 那么,涵盖所有可能性的正确方法是什么? 解决方案 好的,我找到了一种方法,使用 Get
..
如何使用 MethodInfo.Invoke 将参数作为引用传递? 这是我要调用的方法: private static bool test(string str, out byte[] byt) 我试过了,但失败了: byte[] rawAsm = new byte[]{};MethodInfo _lf = asm.GetType().GetMethod(“test", Binding
..
我意识到,一般来说,使用反射会对性能产生影响.(实际上,我本人根本不喜欢反思;这是一个纯粹的学术问题.) 假设存在一个看起来像这样的类: public class MyClass {公共字符串 GetName() {返回“我的名字";}} 在这里忍受我.我知道如果我有一个名为 x 的 MyClass 实例,我可以调用 x.GetName().此外,我可以将 Func 变量设置为 x.Ge
..
我的问题是:如果我有一个MethodInfo对象,该对象是从接口类型获得的方法,并且我还有一个类型对象,该对象是实现该接口的类的,但是它使用一个显式实现,如何为该类中的实现方法正确获取相应的MethodInfo对象? 之所以需要这样做,是因为实现方法可以应用一些属性,我需要通过反射来找到它们,但是需要找到这些属性的类只有实现类的对象引用,以及该接口的Type对象(+对应的MethodInfo
..
我试图使用反射返回正确的"Where"扩展方法,以构建自定义表达式.我尝试了几种方法,但最接近的方法抛出了异常:"mscorlib.dll中发生了'System.Reflection.AmbiguousMatchException'类型的未处理异常" 我知道这是因为在Enumrable类中定义了两个Where方法-但是我该如何仅使用的谓词来返回Where方法 Func.
..
嗨,我该如何使用带有线程的参数调用System.Reflection.MethodInfo.Invoke(). 例如. 说我有一个方法,可以让您传递代表一个字符串的字符串.类名并动态调用相应的类方法,现在我想用线程调用此Methodinfo.invoke,我不知道如何执行此操作,因为我正在调用带有参数的invoke.代码片段被赋予了优先权.谢谢您的帮助 类型classType = o
..
我执行此操作的代码使用反射和给出的字符串,而不是用户输入.最终,我希望用户能够说"float""2.0",并让计算机说,是的,这是计算机会说到的"float"或"bool""abc",这是没有听说过的布尔值. 将用户输入转换为原始类型名称就足够简单了,例如将"string"转换为"System.String",将"float"转换为"System.Single",等等.(尽管您知道的功能来做
..
我在MethodInfo.Invoke(o,null)周围进行了一次try/catch,并且VS2010设置为永不中断Exception,但是不幸的是,调试器仍在Invoked方法中中断.该方法是静态的,并且我已经安装了Phone Developer Beta. 这是错误还是开发人员错误? 谢谢! 解决方案 是的,未选中每个异常复选框,仅在这些Invoke异常时才会中断.所有其
..
如何从methodInfo.invoke获取返回值(int)? 让我感到困难的是,我使用字符串变量来调用该方法. 检查以下示例: if (Convert.ToBoolean(getParameterFromXML("issue", k, 1)) == true) { m = k + 1; MethodInfo methodInfo = typeof(frmDet
..
我想调用具有特定属性的方法. 因此,我循环遍历所有程序集和所有方法以查找具有我的属性的方法.工作正常,但是当我只有MethodInfo时如何调用某个方法. AppDomain app = AppDomain.CurrentDomain; Assembly[] ass = app.GetAssemblies(); Type[] types; foreach (Assembly a in ass
..
给予 public Class Example { public static void Foo(int ID){} public static void Foo(int ID){} } 问题: 将其称为“重载泛型方法"是否正确? 如何在创建MethodInfo对象时指定任一方法? Type exampleType = Type.GetType
..
每个 MSDN ,调用反映的Type.GetMethods()存储MemberInfo缓存中的方法信息,因此不必再次执行昂贵的操作. 我有一个应用程序可以扫描程序集/类型,寻找与给定规范匹配的方法.问题在于,由于.NET挂接到方法元数据上,因此内存消耗显着增加(尤其是使用大量引用程序集时). 有什么方法可以清除或禁用此MemberInfo缓存吗? 解决方案 我不这么认为.一种技
..
这是一个与我之前问过的另一个问题。我有一个重载的方法: public void Add(SomeType some){} public void Add(AnotherType another){} 通过反射找到每种方法?例如如何通过反射获取添加(SomeType一些)方法?你能帮我吗? 解决方案 这里的技
..
随着我以前的线程的连续使用包含其他对象数组的对象的反射读取属性。我希望通过EvgK做出一个可以在代码库中的多个地方使用的通用方法的这个奇妙的方法。 public static void GetMyProperties(object obj) { 列表 oMyProp = new List(); foreach(Pro
..