Questions tagged «reflection»

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


12
通过反射使用字符串值设置属性
我想通过反射设置对象的属性,其值为type string。因此,例如,假设我有一个Ship类,其属性为Latitude,它是一个double。 这是我想做的: Ship ship = new Ship(); string value = "5.5"; PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude"); propertyInfo.SetValue(ship, value, null); 照原样,这引发了ArgumentException: 类型'System.String'的对象不能转换为'System.Double'类型。 如何基于将值转换为适当的类型propertyInfo?

16
检查一个类是否从泛型类派生
我的项目中有一个带有派生类的泛型类。 public class GenericClass<T> : GenericInterface<T> { } public class Test : GenericClass<SomeType> { } 有没有办法找出Type对象是否源自GenericClass? t.IsSubclassOf(typeof(GenericClass<>)) 不起作用。
309 c#  generics  reflection 


6
Convert.ChangeType()在可空类型上失败
我想将字符串转换为对象属性值,我将其名称作为字符串。我正在尝试这样做: string modelProperty = "Some Property Name"; string value = "SomeValue"; var property = entity.GetType().GetProperty(modelProperty); if (property != null) { property.SetValue(entity, Convert.ChangeType(value, property.PropertyType), null); } 问题在于,当属性类型为可为空的类型时,这将失败并引发Invalid Cast Exception。这不是无法转换的值的情况-如果我手动执行此操作(例如DateTime? d = Convert.ToDateTime(value);),它们将起作用(我已经看到一些类似的问题,但仍然无法使它起作用)。
301 c#  .net  reflection 

11
如何获取Python当前模块中所有类的列表?
我见过很多人从一个模块中提取所有类的示例,通常是这样的: # foo.py class Foo: pass # test.py import inspect import foo for name, obj in inspect.getmembers(foo): if inspect.isclass(obj): print obj 太棒了 但是我无法找到如何从当前模块中获取所有类。 # foo.py import inspect class Foo: pass def print_classes(): for name, obj in inspect.getmembers(???): # what do I do here? if inspect.isclass(obj): print obj # test.py import …




28
如何向C ++应用程序添加反射?
我希望能够对C ++类的名称,内容(即成员及其类型)等进行自省。我在这里说的是本机C ++,而不是具有反射的托管C ++。我意识到C ++使用RTTI提供了一些有限的信息。哪些其他库(或其他技术)可以提供此信息?

14
反射-获取属性的名称和值
我有一个类,可以使用名为Name的属性将其命名为Book。有了该属性,我就有了与之关联的属性。 public class Book { [Author("AuthorName")] public string Name { get; private set; } } 在我的主要方法中,我正在使用反射,并希望为每个属性获取每个属性的键值对。因此,在此示例中,我希望属性名称看到“ Author”,属性值看到“ AuthorName”。 问题:如何使用反射获得属性名称和属性值?

9
如何检查变量是否为类?
我想知道如何检查变量是否是类(不是实例!)。 我试图使用该函数isinstance(object, class_or_type_or_tuple)来执行此操作,但我不知道类将具有哪种类型。 例如,在以下代码中 class Foo: pass isinstance(Foo, **???**) # i want to make this return True. 我试图class用???代替“ ” ,但我意识到这class是python中的关键字。
236 python  reflection 

5
在Swift中使用isKindOfClass
我正在尝试学习一些Swift lang,并且想知道如何将以下Objective-C转换为Swift: - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesBegan:touches withEvent:event]; UITouch *touch = [touches anyObject]; if ([touch.view isKindOfClass: UIPickerView.class]) { //your touch was in a uipickerview ... do whatever you have to do } } 更具体地说,我需要知道如何isKindOfClass在新语法中使用。 override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { ??? if ??? { // …

10
通过反射找到私人领域?
鉴于这个班 class Foo { // Want to find _bar with reflection [SomeAttribute] private string _bar; public string BigBar { get { return this._bar; } } } 我想找到要用属性标记的私人物品_bar。那可能吗? 我已经在寻找属性的属性中做到了这一点,但是从来没有一个私有成员字段。 我需要设置哪些绑定标志才能获取私有字段?


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.