问题标签 [getproperties]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
34058 浏览

c# - 您如何使用反射获得一个类及其基类(在层次结构中)的所有属性?(C#)

所以我现在拥有的是这样的:

某物在哪里obj

问题是我想要的一些属性不在obj.GetType()它们中,它们位于更进一步的基类之一中。如果我停止调试器并查看 obj,我必须挖掘一些“基础”条目才能查看我想要获取的属性。是否可以设置一些绑定标志让它返回这些标志,还是我必须递归地挖掘Type.BaseType层次结构并GetProperties在所有这些标志上执行?

0 投票
2 回答
2018 浏览

c# - 反射 - 设置返回 obj 的类型?

我正在使用数据行填充不同类型的对象,相关对象的每个属性 = 到数据行中的类似名称字段。

我想使用一个通用函数来做到这一点。如何从泛型函数强制返回对象的类型。我还不知道<T>语法的实际含义: PopulateObject<T>当我得到编译器错误时不返回类型 - 无法将类型'object'隐式转换为'JobCard'请参阅下面的代码

----第二个答案后更新----

使用此代码: private T PopulateObject(T dataObj, System.Data.DataRow dataRow) {

不过,我遇到了另一个障碍。其中一个属性实际上是另一个名为 Customer 的对象,它拥有 11 个属性。我怀疑还有更多的嵌套对象仍然潜伏着。我将如何处理这些嵌套对象的填充,数据行中只有 1 个字段?

要处理这些对象: - 我必须在父 Objdata 中提取 ChildObj 类型 - 调用我将 ChildObjType 和完整数据行传递给的 ProcessChildObj() 函数 - 并在 ProcessChildObj() 中进行名称匹配,并设置那个属性?

或(如上面的代码) - 递归调用 PopulateObject。然而,这给我带来了一个问题,因为编译器抱怨我尝试将 obj 类型传递给递归调用:

propertyitem.SetValue(dataObj, PopulateObject(propertyitem, dataRow), null); //导致编译器消息“运算符'<'不能应用于'方法组'和'System.type'类型的操作数”

如何提取嵌套 childObj 的类型以将类型作为参数传递?

0 投票
2 回答
6837 浏览

c# - 反射 - 获取嵌套对象的属性

指:反射-设置返回的obj类型? 我有一个对象 Call Jobcard,它有几个属性,其中一个是另一个名为 Customer 的对象,它有自己的属性,其中一个是另一个名为 Adress 的嵌套对象。

这两个函数也将处理其他对象类型。

问题是 PopulateChildObject 函数不起作用,因为 PropertyInfo 列表不是传递的 childObj 的列表。如果我查看手表中传递给 PopulateChildObject 的 dataObj,它有 0 个属性。此外,传递给 PopChildObj() 的 dataObj 的类型为 System.Reflection.RuntimePropertyInfo' 而不是 Customer 类型。我错过了什么?

0 投票
2 回答
1152 浏览

reflection - 使用反射获取属性时,如何将搜索限制在我感兴趣的子类上?

在使用反射成功地从程序集中获取特定类型的列表后,我现在想要获取每个类型的公共属性。

这些类型中的每一种都派生自至少一个基类。

我注意到,当我获得类型的属性时,我也从基类中获得属性。

我需要一种方法来过滤掉基类属性,并且只取回我调用获取属性的类型的属性。

我认为这类似于我只从给定的基本类型获取基本类型的子类,不包括基本类型。

0 投票
1 回答
4441 浏览

c# - 将 ICustomTypeDescriptor.GetProperties 返回的属性动态更改为只读

我有一个实现 ICustomTypeDescriptor 的类,并由用户在 PropertyGrid 中查看和编辑。我的班级还有一个 IsReadOnly 属性,该属性确定用户以后是否能够保存他们的更改。如果用户无法保存,我不想让他们进行更改。因此,如果 IsReadOnly 为真,我想覆盖任何在属性网格中可编辑为只读的属性。

我正在尝试使用 ICustomTypeDescriptor 的 GetProperties 方法将 ReadOnlyAttribute 添加到每个 PropertyDescriptor。但这似乎不起作用。这是我的代码。

这甚至是使用 TypeDescriptor.AddAttributes() 的正确方法吗?在调用后进行调试时,AddAttributes() 属性仍然具有相同数量的属性,其中没有一个是 ReadOnlyAttribute。

0 投票
1 回答
436 浏览

reflection - IEnumerable.GetProperties()

我有类 Foo,它派生自接口 IFoo 和 IEnumerable

如何调用 GetProperties(),它只返回 IEnumerable 的公共属性(不是 IFoo 或此类)?

0 投票
1 回答
909 浏览

.net - TypeDescriptor.GetProperties 从类中不返回任何内容

我已经定义了一个包含两个简单属性 num 和 name 的类 TestObject。我正在尝试对 TestObject 类的对象使用 TypeDescriptor.GetProperties() 来检索定义的属性。但是,它不会返回任何东西。

我在这里错过了一些简单的东西吗?感谢你的帮助。

0 投票
3 回答
3919 浏览

c# - 如何提取类对象的 System.Reflection.PropertyInfo 名称作为 csv 文件的第一行

在从我的数据源创建实际的通用列表之前,我正在尝试使用 System.Reflection 输出 csv 文本文件的第一行列标题信息。

在以下例程中,我试图遍历对象定义的属性,并将属性名称用作输出文件第一行的“列名”:

foreach 循环立即退出。另外,我在类中放置了一个常量分隔符,但我想将其用作字段分隔符值(而不是作为“列”名称)。

我假设如果我能得到这样的东西,类中属性的序数位置将保持一致。

从我的数据源创建的代码的其余部分List<DocMetaData>有效,但我想添加这个“第一行”的东西。

感谢您对此的帮助。

0 投票
2 回答
1262 浏览

c# - 如何从 PropertyInfo 访问对象的属性?

当我遍历一个对象的属性并最终得到一个 PropertyInfo 时,我如何访问该对象的实际属性?

0 投票
1 回答
1719 浏览

c# - type.GetProperties() 时过滤掉受保护的设置器

我试图反映一种类型,并且只获取具有公共设置器的属性。这似乎对我不起作用。在下面的示例 LinqPad 脚本中,“Id”和“InternalId”与“Hello”一起返回。我该怎么做才能过滤掉它们?