reflection相关内容

在 .NET/C# 中使用委托加速反射 API

这个帖子有评论如果你需要打电话该方法多次,使用反射一次找到它,然后将其分配给委托,然后调用委托.. 这个 delegate 如何以及为什么工作得更快?谁能举个例子? 我可以称之为 caching 吗?如果是这样,除了这个带委托的缓存方法之外,还有其他方法吗? 添加 我想出了一个使用 delegate 这里. 解决方案 A delegate 只是一个指向函数的指针.如果您 ..
发布时间:2022-01-18 12:43:39 C#/.NET

反射 - 将委托添加到另一个委托的调用列表

我正在尝试将委托附加到不同委托的调用列表.通过这种方式,我正在实现一种对现有事件的钩子.我需要连接在每个被调用的事件之后运行的东西. 只要类型暴露的委托和我传入的动作具有完全相同的签名,以下示例有效.(On1 和 OnAll 事件都使用 Action 委托声明,因此可以正常工作). 代码:我如何将 Action 与事件修饰符公开的现有委托挂钩. 公共静态类 ReflectionExt ..
发布时间:2022-01-18 12:43:29 C#/.NET

通过反射将 Action 订阅到任何事件类型

考虑: someControl.Click += delegate { Foo();}; 事件的参数无关紧要,我不需要它们,我对它们不感兴趣.我只是想让 Foo() 被调用.没有明显的方法可以通过反射来做同样的事情. 我想将以上内容翻译成类似 的内容 void Foo() {/* 发射导弹等 */}void Bar(对象 obj,EventInfo 信息){行动 callFoo = ..
发布时间:2022-01-18 12:42:52 C#/.NET

任何方法类型的委托 - C#

我想要一个可以执行任何外部方法的类,像这样: class CrazyClass{//其他的东西公共 AnyReturnType 执行(AnyKindOfMethod 方法,对象 [] 参数ForMethod){//更多东西return Method(ParametersForMethod)//或类似的东西}} 这可能吗?是否有接受任何方法签名的委托? 解决方案 你可以通过 Func 和 ..
发布时间:2022-01-18 12:42:33 C#/.NET

C#中的函数指针

我想在某些方面,Delegate 或 MethodInfo 中的一个(或两者)都符合这个标题.但是,两者都没有提供我正在寻找的语法上的好处.所以,简而言之,有什么方法可以写出以下内容: FunctionPointer foo =//不管怎样,使用机制创建函数指针富(); 我不能使用实体委托(即,使用 delegate 关键字来声明委托类型),因为直到运行时才能知道确切的参数列表.作为参考,这是 ..
发布时间:2022-01-18 12:36:06 C#/.NET

我可以按类型获取 C# 委托的签名吗?

如果您有委托的类型信息,是否有一种直接的方法使用反射来获取委托的参数列表? 例如,如果我声明一个委托类型如下 delegate double FooDelegate(字符串参数,布尔条件); 稍后获取该委托类型的类型信息,如下所示 类型 delegateType = typeof(FooDelegate); 是否可以从该类型信息对象中检索返回类型 (double) 和参数列表 ({s ..
发布时间:2022-01-18 12:35:31 C#/.NET

从 MethodInfo 构建一个委托?

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

使用反射在 C# 中引发事件的单元测试

我想测试设置某个属性(或更一般地说,执行某些代码)是否会在我的对象上引发某个事件.在这方面,我的问题类似于 单元测试事件是在 C# 中提出,但我需要很多这样的测试,而且我讨厌样板.所以我正在寻找一个更通用的解决方案,使用反射. 理想情况下,我想做这样的事情: [测试方法]公共无效测试宽度(){MyClass myObject = new MyClass();AssertRaisesEven ..
发布时间:2022-01-18 12:23:49 C#/.NET

为属性设置器或获取器创建高性能开放委托

开放委托是对没有目标的实例方法的委托.要调用它,您需要提供目标作为其第一个参数.它们是一种优化代码的聪明方法,否则会使用反射并且性能很差.有关公开代表的介绍,请参阅 this.您在实践中使用它的方式是使用昂贵的反射代码来构建这些开放的委托,但是您可以通过简单的委托调用非常便宜地调用它们. 我正在尝试编写将任意 PropertyInfo 转换为它的 setter 的委托的代码.到目前为止,我想 ..
发布时间:2022-01-18 12:22:29 C#/.NET

从 methodinfo 获取委托

我有一个下拉列表,它通过检查类的方法并包括与特定签名匹配的方法来填充.问题在于从列表中获取所选项目并让委托在类中调用该方法.第一种方法有效,但我无法弄清楚第二种方法的一部分. 例如, public delegate void MyDelegate(MyState state);公共静态 MyDelegate GetMyDelegateFromString(string methodName ..
发布时间:2022-01-18 12:22:03 C#/.NET

具有未知类型的 CreateDelegate

我正在尝试创建委托以在运行时读取/写入未知类型类的属性. 我有一个通用类 Main 和一个看起来像这样的方法: Delegate.CreateDelegate(typeof(Func), get) 其中 get 是应读取的属性的 MethodInfo.问题是当属性返回 int 时(我猜这发生在值类型上)上面的代码抛出 ArgumentException 因为方法不能被绑定.如果是字 ..
发布时间:2022-01-18 12:15:09 C#/.NET

代表一个动作<参考 T1,T2>

我正在尝试创建一个采用 ref 参数的静态方法的委托.请不要问我为什么要做这样的 cockamamie 事情.这都是学习 .Net、C# 和反射如何工作以及如何优化它的一部分. 我的代码是: 公共结构 DataRow{私人双T;static public void Cram_T(ref DataRow dr, double a_t){博士 = a_t;}}''''类型 myType = ..
发布时间:2022-01-18 12:12:07 C#/.NET

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

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

自动委托 java 类的所有方法

假设我有一个包含许多公共方法的类: 公共类 MyClass {公共无效方法1(){}公共无效方法2(){}(...)公共无效方法N(){}} 现在我想创建一个 wrapper 类,它将所有方法委托给包装的实例(delegate): 公共类 WrapperClass 扩展 MyClass {私人最终 MyClass 委托;公共 WrapperClass(MyClass 委托){this.del ..
发布时间:2022-01-18 12:02:58 Java开发

当 struts.ognl.allowStaticMethodAccess 为 false 时,Struts 2 调用静态方法

为了安全问题,struts 2 将 struts.ognl.allowStaticMethodAccess 设置为 false.静态方法调用在某些情况下可能很有用,例如在处理表达式基础验证器时 Struts 2 在验证器实验中使用 StringUtils. 解决这个问题的一种方法是在动作中定义一个辅助方法,例如,如果我们想使用 Math 类,我们应该在下面添加: public double ..
发布时间:2022-01-16 22:30:25 Java开发

如何在 Eclipse 中列出 Java 类及其祖先公开的所有属性?

给定一个 Java 类,我希望能够列出所有祖先中公开的所有属性,并在同样的方式. 用一个简单的例子更容易解释: 公共类 BaseClass1 {私有int intProperty;//有 getter 和 setter(未显示)}公共类 SubClass1 扩展 BaseClass1 {私人int privateSoNotListed;公共子类2子类2属性;}公共类 BaseClass2 ..
发布时间:2022-01-16 13:03:02 Java开发

在 Eclipse 插件中使用时反射库不起作用

我使用 Reflections 库开发了一个应用程序,用于查询所有具有特定属性的类注解.在我决定从我的应用程序创建一个 Eclipse 插件之前,一切都像魅力一样工作.然后反射停止工作. 鉴于我的应用程序在不是 Eclipse 插件的一部分时运行良好,我认为这应该是类加载器问题.因此,我将插件激活器类的类加载器、上下文类加载器以及我能想象到的所有其他类加载器添加到我的 Reflections ..
发布时间:2022-01-16 12:53:05 Java开发

字符串文字、实习和反射

我正在尝试为这个问题找到第三种解决方案. 我不明白为什么这不打印 false. 公共类 MyClass {公共 MyClass() {尝试 {字段 f = String.class.getDeclaredField("value");f.setAccessible(true);f.set("true", f.get("false"));} 捕捉(异常 e){}}公共静态无效主要(字符串[] ..
发布时间:2022-01-16 12:42:49 Java开发