Questions tagged «reflection»

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


7
如何遍历一个类的所有属性?
我有课 Public Class Foo Private _Name As String Public Property Name() As String Get Return _Name End Get Set(ByVal value As String) _Name = value End Set End Property Private _Age As String Public Property Age() As String Get Return _Age End Get Set(ByVal value As String) _Age = value …

10
如何动态加载Python类
给定一个Python类的字符串,例如my_package.my_module.MyClass,最好的加载方式是什么? 换句话说,我正在寻找Class.forName()Java中等效的Python函数。它需要在Google App Engine上工作。 最好是一个函数,该函数接受类的FQN作为字符串,并返回对该类的引用: my_class = load_class('my_package.my_module.MyClass') my_instance = my_class()

1
为什么Attributes.IsDefined()缺少重载?
受SO问题启发。Attribute类具有IsDefined()方法的多个重载。涵盖了应用于程序集,模块,成员信息,参数信息的属性。MemberInfo重载涵盖PropertyInfo,FieldInfo,EventInfo,MethodInfo,ConstructorInfo。 这将处理大多数AttributeTargets。除了一个缺点:Attribute.IsDefined(Type,Type)没有重载,因此您可以检查是否在类上定义了属性。或针对此问题的结构,委托或枚举。 并不是说这是一个真正的问题,Type.GetCustomAttributes()可以解决此问题。但是所有的BlahInfo类型也都具有此功能。我不知道缺乏对称性。我无法确定为什么这会对Type造成问题。猜测继承问题并不能向我解释。混合使用ValueType可能会领先,但这仍然没有意义。我不买“他们忘了”,他们从来不买。 为什么这种超载丢失了?
165 c#  .net  reflection 

4
仅检索Java类中声明的静态字段
我有以下课程: public class Test { public static int a = 0; public int b = 1; } 是否可以使用反射仅获取静态字段的列表?我知道我可以使用来获得所有字段的数组Test.class.getDeclaredFields()。但是似乎无法确定Field实例是否代表静态字段。
163 java  reflection  static  field 

12
如何测试类型是否为原始
我有一段代码将类型序列化为Html标签。 Type t = typeof(T); // I pass <T> in as a paramter, where myObj is of type T tagBuilder.Attributes.Add("class", t.Name); foreach (PropertyInfo prop in t.GetProperties()) { object propValue = prop.GetValue(myObj, null); string stringValue = propValue != null ? propValue.ToString() : String.Empty; tagBuilder.Attributes.Add(prop.Name, stringValue); } 这个伟大的工程,但我希望它只是对基本类型,像这样做int,double,bool等,以及其他类型的不是原始的,但可以像容易序列化string。我希望它忽略其他所有内容,例如列表和其他自定义类型。 谁能建议我该怎么做?还是我需要在某个地方指定要允许的类型,然后打开属性的类型以查看是否允许?有点杂乱,所以如果我有一个更简洁的方法,那就太好了。



15
如何拦截C#中的方法调用?
对于给定的类,我想具有跟踪功能,即,我想记录每个方法调用(方法签名和实际参数值)和每个方法退出(仅方法签名)。 假定以下条件,我如何完成此操作: 我不想将任何第三方AOP库用于C#, 我不想将重复的代码添加到我要跟踪的所有方法中, 我不想更改该类的公共API-该类的用户应该能够以完全相同的方式调用所有方法。 为了使问题更具体,我们假设有3个类: public class Caller { public static void Call() { Traced traced = new Traced(); traced.Method1(); traced.Method2(); } } public class Traced { public void Method1(String name, Int32 value) { } public void Method2(Object object) { } } public class Logger { public static void …
154 c#  reflection  aop 

5
将python'type'对象转换为字符串
我想知道如何使用python的反射功能将python'type'对象转换为字符串。 例如,我想打印一个对象的类型 print "My type is " + type(someObject) # (which obviously doesn't work like this)
152 python  reflection 

13
从未知对象获取属性和值
从PHP的世界出发,我决定尝试一下C#。我进行了搜索,但似乎找不到与之等效的答案。 $object = new Object(); $vars = get_class_vars(get_class($object)); foreach($vars as $var) { doSomething($object->$var); } 我基本上有一个对象的列表。该对象可以是三种不同类型中的一种,并将具有一组公共属性。我希望能够获得对象的属性列表,将其循环,然后将其写到文件中。我认为这与c#反射有关,但这对我来说是新的。 任何帮助将不胜感激。
150 c#  reflection 

5
一行Python代码可以知道其缩进嵌套级别吗?
从这样的事情: print(get_indentation_level()) print(get_indentation_level()) print(get_indentation_level()) 我想得到这样的东西: 1 2 3 代码可以这样读取吗? 我想要的只是更多嵌套代码部分的输出。以使代码易于阅读的方式,使输出易于阅读。 当然,我可以使用eg手动实现此功能.format(),但是我想到的是自定义打印功能,该功能print(i*' ' + string)在哪里i是缩进级别。这将是使终端上的输出可读的一种快速方法。 有没有更好的方法可以避免麻烦的手动格式化?

7
如何基于名称获取属性值
有没有一种方法可以根据对象的名称获取对象的属性值? 例如,如果我有: public class Car : Vehicle { public string Make { get; set; } } 和 var car = new Car { Make="Ford" }; 我想编写一个方法,我可以在其中传递属性名称,它将返回属性值。即: public string GetPropertyValue(string propertyName) { return the value of the property; }
147 c#  asp.net  reflection 

13
在运行时,找到扩展基类的Java应用程序中的所有类
我想做这样的事情: List<Animal> animals = new ArrayList<Animal>(); for( Class c: list_of_all_classes_available_to_my_app() ) if (c is Animal) animals.add( new c() ); 因此,我想查看应用程序Universe中的所有类,当我发现一个来自Animal的类时,我想创建一个该类型的新对象并将其添加到列表中。这使我可以添加功能,而不必更新事物列表。我可以避免以下情况: List<Animal> animals = new ArrayList<Animal>(); animals.add( new Dog() ); animals.add( new Cat() ); animals.add( new Donkey() ); ... 通过上述方法,我可以简单地创建一个扩展Animal的新类,它将自动被拾取。 更新:10/16/2008 9:00 AM太平洋标准时间: 这个问题引起了很多反响-谢谢。 从回答和研究中,我发现我真正想做的事在Java下是不可能的。有一些方法可以使用,例如ddimitrov的ServiceLoader机制,但是对于我想要的东西,它们非常繁琐,我相信我只是将问题从Java代码移到了外部配置文件中。 更新5/10/19(11年后!)根据@IvanNik的回答 ,现在有几个库可以帮助解决此问题。org.reflections看起来不错。此外ClassGraph从@Luke和记黄埔的答案看起来很有趣。答案中还有其他几种可能性。 声明我想要的另一种方式:Animal类中的静态函数查找并实例化了从Animal继承的所有类-无需任何进一步的配置/编码。如果必须进行配置,无论如何,我还是可以在Animal类中实例化它们。我了解这是因为Java程序只是.class文件的松散联合,而事实就是如此。 有趣的是,这似乎在C#中是微不足道的。


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.