Questions tagged «reflection»

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


1
获取标记了某些属性的所有属性
我在那里有类和属性。可以将某些属性标记为属性(这是我LocalizedDisplayName从继承的DisplayNameAttribute)。这是获取类的所有属性的方法: private void FillAttribute() { Type type = typeof (NormDoc); PropertyInfo[] propertyInfos = type.GetProperties(); foreach (var propertyInfo in propertyInfos) { ... } } 我想在标记的列表框中添加类的属性,并在列表框中LocalizedDisplayName显示属性的值。我怎样才能做到这一点? 编辑 这是LocalizedDisplayNameAttribute: public class LocalizedDisplayNameAttribute : DisplayNameAttribute { public LocalizedDisplayNameAttribute(string resourceId) : base(GetMessageFromResource(resourceId)) { } private static string GetMessageFromResource(string resourceId) { var test =Thread.CurrentThread.CurrentCulture; ResourceManager manager …
80 c#  reflection 

12
在C#中使用反射获取嵌套对象的属性
给定以下对象: public class Customer { public String Name { get; set; } public String Address { get; set; } } public class Invoice { public String ID { get; set; } public DateTime Date { get; set; } public Customer BillTo { get; set; } } 我想使用反射Invoice来获取的Name属性Customer。假设此代码可以正常工作,这就是我要做的事情: Invoice inv = …
80 c#  reflection 


4
如何获取特定属性的PropertyInfo?
我想获取特定属性的PropertyInfo。我可以使用: foreach(PropertyInfo p in typeof(MyObject).GetProperties()) { if ( p.Name == "MyProperty") { return p } } 但是必须有一种方法可以做类似 typeof(MyProperty) as PropertyInfo 在那儿?还是我坚持进行类型不安全的字符串比较? 干杯。
79 c#  reflection 


6
为什么反射被称为反射而不是自省?
反射一词的由来是什么?似乎更像是内省。为什么不叫它呢? 内省:向内看; 特别是自我检查的行为或过程。 反射: 反映的行为或反映的状态。 一个图像; 表示; 对应物 对某事的想法的固定;详细的思考 考虑或冥想中出现的思想

5
如何从字符串表示形式获取通用类型?
我有MyClass<T>。 然后我有这个string s = "MyClass<AnotherClass>";。如何从字符串获取Type s? 一种方法(难看)是解析出“ <”和“>”并执行以下操作: Type acType = Type.GetType("AnotherClass"); Type whatIwant = typeof (MyClass<>).MakeGenericType(acType); 但是,有没有一种更干净的方法来获取最终类型而不进行任何解析等?
79 c#  reflection  types 

7
物镜自省/反思
是否有内置的方法,函数,API,普遍接受的方式等来在Objective-C中转储实例化对象的内容,特别是在Apple的Cocoa / Cocoa-Touch环境中? 我希望能够做类似的事情 MyType *the_thing = [[MyType alloc] init]; NSString *the_dump = [the_thing dump]; //pseudo code NSLog("Dumped Contents: %@", the_dump); 并显示对象的实例变量名称和值,以及在运行时可调用的任何方法。理想情况下为易于阅读的格式。 对于熟悉PHP开发人员,我基本上找的反射功能等效(var_dump(),get_class_methods())和面向对象的反射API。

2
WCF反序列化如何在不调用构造函数的情况下实例化对象?
WCF反序列化有一些不可思议的事情。如何在不调用其构造函数的情况下实例化数据协定类型的实例? 例如,考虑以下数据合同: [DataContract] public sealed class CreateMe { [DataMember] private readonly string _name; [DataMember] private readonly int _age; private readonly bool _wasConstructorCalled; public CreateMe() { _wasConstructorCalled = true; } // ... other members here } 通过获取此对象的实例时,DataContractSerializer您会看到字段_wasConstructorCalled为false。 那么,WCF如何做到这一点?这是其他人也可以使用的技术,还是对我们隐藏?

6
反思以识别扩展方法
在C#中,有没有一种使用反射的技术来确定某个方法是否已作为扩展方法添加到类中? 给定一种扩展方法(例如以下所示),是否可以确定Reverse()已添加到字符串类? public static class StringExtensions { public static string Reverse(this string value) { char[] cArray = value.ToCharArray(); Array.Reverse(cArray); return new string(cArray); } } 我们正在寻找一种在单元测试中确定开发人员是否适当添加了扩展方法的机制。尝试执行此操作的一个原因是,开发人员可能会将类似的方法添加到实际类中,如果是这样,则编译器会选择该方法。


6
Java反射获取所有私有字段
我想知道是否有一种方法可以获取java中某个类的所有私有字段及其类型。 例如,假设我有一堂课 class SomeClass { private String aaa; private SomeOtherClass bbb; private double ccc; } 现在,我想获得的所有私有字段(aaa,bbb,ccc类)SomeClass(如果不知道所有领域前期的名称),并检查它们的类型。

9
具有动态ArrayList项类型的Gson TypeToken
我有以下代码: Type typeOfObjectsList = new TypeToken<ArrayList<myClass>>() {}.getType(); List<myClass> objectsList = new Gson().fromJson(json, typeOfObjectsList); 它将JSON字符串转换List为对象的。但是,现在我想让它具有在运行时定义ArrayList的动态类型(而不仅仅是myClass)。 所述ArrayList的项目类型将与被定义反射。 我尝试了这个: private <T> Type setModelAndGetCorrespondingList2(Class<T> type) { Type typeOfObjectsListNew = new TypeToken<ArrayList<T>>() {}.getType(); return typeOfObjectsListNew; } 但这是行不通的。这是例外: java.sql.SQLException: Fail to convert to internal representation: {....my json....}

10
如何获取Java 8方法参考的MethodInfo?
请看下面的代码: Method methodInfo = MyClass.class.getMethod("myMethod"); 此方法有效,但是方法名称作为字符串传递,因此即使myMethod不存在,也可以编译。 另一方面,Java 8引入了方法引用功能。在编译时检查它。可以使用此功能获取方法信息吗? printMethodName(MyClass::myMethod); 完整示例: @FunctionalInterface private interface Action { void invoke(); } private static class MyClass { public static void myMethod() { } } private static void printMethodName(Action action) { } public static void main(String[] args) throws NoSuchMethodException { // This works, but method …

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.