Tag: reflection

如何testing一个types是匿名的?

我有以下方法将对象序列化为HTML标记。 我只想这样做,但如果types不是匿名的。 private void MergeTypeDataToTag(object typeData) { if (typeData != null) { Type elementType = typeData.GetType(); if (/* elementType != AnonymousType */) { _tag.Attributes.Add("class", elementType.Name); } // do some more stuff } } 有人可以告诉我如何做到这一点? 谢谢

Java类可以在运行时自己添加一个方法吗?

一个类可以在运行时为自己添加一个方法(比如从一个static块),所以如果有人在这个类上进行reflection,他们会看到新的方法,即使它没有在编译时定义? 背景: 我使用的框架期望按照惯例定义具有doAction(…)方法的Action类。 框架在运行时检查这些类,以查看doAction()方法中可用的参数types。 例如:doAction( String a, Integer b) 我希望每个类都能够在检查时及时生成具有各种参数的doAction()方法。 该方法的主体可以是空的。

通过reflection改变私人最终领域

class WithPrivateFinalField { private final String s = "I'm totally safe"; public String toString() { return "s = " + s; } } WithPrivateFinalField pf = new WithPrivateFinalField(); System.out.println(pf); Field f = pf.getClass().getDeclaredField("s"); f.setAccessible(true); System.out.println("f.get(pf): " + f.get(pf)); f.set(pf, "No, you're not!"); System.out.println(pf); System.out.println(f.get(pf)); 输出: s = I'm totally safe f.get(pf): I'm totally safe s […]

有什么办法来设置私人/受保护的静态属性使用reflection类?

我正在尝试执行类的静态属性的备份/恢复function。 我可以使用reflection对象getStaticProperties()方法获取所有静态属性及其值的列表。 这将获得private和public static属性及其值。 问题是我试图用reflection对象setStaticPropertyValue($key, $value)方法恢复属性时似乎并没有得到相同的结果。 private和protectedvariables对于这个方法是不可见的,因为它们是getStaticProperties() 。 似乎不一致。 有什么办法设置私人/受保护的静态属性使用reflection类,或任何其他方式呢? 受审 class Foo { static public $test1 = 1; static protected $test2 = 2; public function test () { echo self::$test1 . '<br>'; echo self::$test2 . '<br><br>'; } public function change () { self::$test1 = 3; self::$test2 = 4; } } $test = new foo(); […]

如何通过reflection来获取对象中的字段?

我有一个Java对象(基本上是一个VO),我不知道它的types。 我需要得到那个对象不是null的值。 如何才能做到这一点?

使用reflection按声明的顺序获取属性

我需要按照在类中声明的顺序使用reflection来获取所有属性。 根据MSDN,使用GetProperties()时不能保证顺序 GetProperties方法不会以特定顺序(如字母或声明顺序)返回属性。 但是我已经读过,有一个解决方法是通过MetadataToken对属性进行sorting。 所以我的问题是,这是安全的吗? 我似乎无法find有关MSDN的任何信息。 或者还有解决这个问题的其他方法吗? 我目前的执行情况如下: var props = typeof(T) .GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) .OrderBy(x => x.MetadataToken);

Java:访问具有types参数的私有构造函数

这是关于java私有构造函数的这个问题的后续。 假设我有以下class级: class Foo<T> { private T arg; private Foo(T t) { // private! this.arg = t; } @Override public String toString() { return "My argument is: " + arg; } } 我将如何使用reflection来构造new Foo("hello") ? 回答 基于jtahlborn的回答 ,下面的工作: public class Example { public static void main(final String[] args) throws Exception { Constructor<Foo> constructor; constructor = […]

通过reflection将所有从一个类中的字段的值复制到另一个类中

我有一个class,基本上是另一class的副本。 public class A { int a; String b; } public class CopyA { int a; String b; } 我正在做的是在通过web服务调用发送CopyA之前将A类A值放入CopyA 。 现在我想创build一个reflection方法,它基本上将从A类到class CopyA所有字段(按名称和types) CopyA 。 我怎样才能做到这一点? 这是我迄今为止,但它不工作。 我认为这里的问题是,我试图在我正在循环的字段上设置一个字段。 private <T extends Object, Y extends Object> void copyFields(T from, Y too) { Class<? extends Object> fromClass = from.getClass(); Field[] fromFields = fromClass.getDeclaredFields(); Class<? extends Object> tooClass […]

我可以通过它的types获取C#委托的签名吗?

如果您有types信息,是否有直接的方法使用reflection来获取委托的参数列表? 举个例子,如果我声明一个委托types如下 delegate double FooDelegate (string param, bool condition); 并稍后获取该委托types的types信息,如下所示 Type delegateType = typeof(FooDelegate); 是否有可能从该types的信息对象中检索返回types(double)和参数列表({string,bool})?

如何在运行时从文件夹或JAR加载类?

我正在尝试制作一个Java工具,它将扫描Java应用程序的结构并提供一些有意义的信息。 要做到这一点,我需要能够从项目位置(JAR / WAR或者只是一个文件夹)中扫描所有.class文件,并使用reflection来读取它们的方法。 这certificate是几乎不可能的。 我可以find很多基于URLClassloader的解决scheme,这些解决scheme允许我从一个目录/归档中加载特定的类,但是没有一个能够让我在没有关于类名或者包结构的任何信息的情况下加载类。 编辑:我觉得我措辞不好。 我的问题不是我不能得到所有的类文件,我可以用recursion等来做到这一点,并正确地find它们。 我的问题是获取每个类文件的Class对象。