Questions tagged «reflection»

反射是程序在运行时观察和/或修改其结构和/或行为的能力。反射取决于支持的编程语言-请在使用此标记时标记正在使用的编程语言。


13
.NET反射的成本是多少?
我不断地听到要使用多么糟糕的反射。虽然我通常会避免反思,很少发现没有它无法解决我的问题的情况,但我想知道... 对于那些在应用程序中使用反射的人,您是否衡量了性能方面的影响,真的那么糟糕吗?

6
如何获得具有给定属性的属性列表?
我有一个类型,t我想获取具有属性的公共属性的列表MyAttribute。该属性用标记AllowMultiple = false,如下所示: [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)] 目前我所拥有的是这个,但是我在想有一种更好的方法: foreach (PropertyInfo prop in t.GetProperties()) { object[] attributes = prop.GetCustomAttributes(typeof(MyAttribute), true); if (attributes.Length == 1) { //Property with my custom attribute } } 我该如何改善?我很抱歉,如果这是重复的,那儿有大量的反射线程……似乎这是一个非常热门的话题。
210 c#  .net  reflection 

13
以字符串形式获取属性名称
(请参阅下面我使用接受的答案创建的解决方案) 我正在尝试改善某些涉及反射的代码的可维护性。该应用程序具有.NET Remoting接口,该接口(除其他外)公开了一种称为Execute的方法,用于访问应用程序未包含在其发布的远程接口中的部分。 这是应用程序指定通过Execute可以访问的属性(在此示例中为静态属性)的方式: RemoteMgr.ExposeProperty("SomeSecret", typeof(SomeClass), "SomeProperty"); 因此,远程用户可以致电: string response = remoteObject.Execute("SomeSecret"); 然后该应用将使用反射来查找SomeClass.SomeProperty并将其值作为字符串返回。 不幸的是,如果有人重命名SomeProperty而忘记更改ExposeProperty()的第3个参数,则会破坏此机制。 我需要相当于: SomeClass.SomeProperty.GetTheNameOfThisPropertyAsAString() 用作ExposeProperty中的第三个参数,因此重构工具将负责重命名。 有没有办法做到这一点?提前致谢。 好的,这就是我最终创建的内容(基于我选择的答案和他引用的问题): // <summary> // Get the name of a static or instance property from a property access lambda. // </summary> // <typeparam name="T">Type of the property</typeparam> // <param name="propertyLambda">lambda expression of the …

13
您可以使用反射来查找当前正在执行的方法的名称吗?
如标题所示:反射可以为您提供当前正在执行的方法的名称。 由于海森堡问题,我倾向于不猜测。您如何调用一个方法,该方法将告诉您当前方法而不更改当前方法是什么?但我希望有人能证明我做错了。 更新: 第2部分:是否可以将其用于查找属性的内部代码? 第3部分:演出效果如何? 我了解了MethodBase.GetCurrentMethod()的最终结果。我还了解到,不仅可以创建堆栈跟踪,还可以仅创建所需的确切帧。 要在属性中使用它,只需使用.Substring(4)删除“ set_”或“ get_”。
202 .net  reflection 



9
反射:如何使用参数调用方法
我试图通过反射与参数来调用方法,我得到: 对象与目标类型不匹配 如果我调用不带参数的方法,则效果很好。基于以下代码(如果我调用该方法)Test("TestNoParameters"),它可以正常工作。但是,如果我致电Test("Run"),我会得到一个例外。我的代码有问题吗? 我最初的目的是传递一个对象数组,例如,public void Run(object[] options)但这没有用,我尝试了一些简单的事情,例如字符串,但没有成功。 // Assembly1.dll namespace TestAssembly { public class Main { public void Run(string parameters) { // Do something... } public void TestNoParameters() { // Do something... } } } // Executing Assembly.exe public class TestReflection { public void Test(string methodName) { Assembly assembly = …

7
检查类对象是否是Java中另一个类对象的子类
我正在玩Java的反射API,并尝试处理一些字段。现在,我要确定字段的类型。字符串很简单,只要这样做myField.getType().equals(String.class)。其他非派生类也是如此。但是,如何检查派生类?例如LinkedList作为的子类List。我无法找到任何isSubclassOf(...)或extends(...)方法。我是否需要遍历所有人getSuperClass()并自己找到超人?
195 java  class  reflection 

2
为什么要找到类型的初始化程序会引发NullReferenceException?
这让我难过。我正在尝试优化Noda Time的一些测试,其中我们进行了一些类型初始化程序检查。我以为在将所有内容加载到new之前,先要确定类型是否具有类型初始值设定项(静态构造函数或带有初始值设定项的静态变量)AppDomain。令我惊讶的是,NullReferenceException尽管我的代码中没有空值,但对此进行了一次小小的测试。仅当编译时没有调试信息时,它才会引发异常。 这是一个简短但完整的程序来演示该问题: using System; class Test { static Test() {} static void Main() { var cctor = typeof(Test).TypeInitializer; Console.WriteLine("Got initializer? {0}", cctor != null); } } 以及编译和输出记录: c:\Users\Jon\Test>csc Test.cs Microsoft (R) Visual C# Compiler version 4.0.30319.17626 for Microsoft (R) .NET Framework 4.5 Copyright (C) Microsoft Corporation. All rights reserved. …

4
Java反射中的getFields和getDeclaredFields有什么区别
我对使用Java反射时的getFields方法和getDeclaredFields方法之间的区别感到困惑。 我读到它getDeclaredFields使您可以访问该类的所有字段,并且 getFields只返回公共字段。如果是这样,您为什么不总是使用getDeclaredFields? 有人可以详细说明一下,并解释两种方法之间的区别,以及何时/为什么要在另一种方法上使用一种方法吗?
194 java  reflection 

5
获取程序集名称
C#的异常类具有一个source属性,该属性默认情况下设置为程序集的名称。 是否有另一种方法来获取此确切的字符串(不分析其他字符串)? 我尝试了以下方法: catch(Exception e) { string str = e.Source; //"EPA" - what I want str = System.Reflection.Assembly.GetExecutingAssembly().FullName; //"EPA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" str = typeof(Program).FullName; //"EPA.Program" str = typeof(Program).Assembly.FullName; //"EPA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" str = typeof(Program).Assembly.ToString(); //"EPA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" str = typeof(Program).AssemblyQualifiedName; //"EPA.Program, EPA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" }



12
从JSON数据生成JSON模式的工具
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使它成为Stack Overflow 的主题。 3年前关闭。 改善这个问题 我们有这个json模式草稿。我想获取我的JSON数据的样本并为JSON模式生成一个框架,该框架可以手动进行修改,添加诸如description,required之类的内容,而这些不能从特定的示例中推断出来。 例如,从我的输入example.json: { "foo": "lorem", "bar": "ipsum" } 我将运行json_schema_g​​enerator工具,并得到: { "foo": { "type" : "string", "required" : true, "description" : "unknown" }, "bar": { "type" : "string", "required" : true, "description" : "unknown" } } 此示例已手动编码,因此可能存在错误。有没有什么工具可以帮助我进行JSON转换-> JSON模式?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.