问题标签 [propertyinfo]
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.
.net - [Delegate].CreateDelegate 设置属性性能
这是我一直在研究的一个序列化器,它基于一些映射的属性属性将数据行序列化为对象。我阅读了许多与使用 [Delegate].CreateDelegate 来提高速度相关的帖子 - 所以我试了一下。它似乎已经获得了一些性能提升,但很少(即使在所有对象类型的初始循环以缓存所有可能的属性信息对象等之后)。映射的属性信息只有一个可以分配的备用数据库列名,因为我们无法完全控制我使用的所有列名。它也只抓取我想要映射的属性。
现在,大约的序列化。1500 个对象,每个对象平均有 13 个属性,1500 个父对象(作为子对象)中的每个对象平均有 3 个对象,每个对象平均有 13 个属性 - 为了我的比较而夸耀这些时间:
手动设置 property.Name = row.Item("columnName")
785 ms
p.SetValue
1490 毫秒
GetSetMethod.Invoke
1585 毫秒
[委托].CreateDelegate
1285 毫秒
谁能建议我可以做更多的事情来提高性能?
c# - 如何使用 C# 反射将 Vaue 设置为嵌套属性。?
我正在尝试使用反射动态地为类的嵌套属性设置一个值。谁能帮我做到这一点。
我正在上课Region
,如下所示。
我有一个 Oracle 数据阅读器来提供来自 Ref 游标的值。
这会给我
Id,name,Country_id,Country_name
我可以通过下面将值分配给 Region.Id、Region.Name。
对于嵌套属性,我可以通过读取字段名创建一个实例来为下面的赋值。
上面的赋值给Country.Id
.
但是由于我每次都在创建实例,因此Country.Id
如果我选择 Next Country.Name,我将无法获得先前的值。
谁能告诉 can 为objItem(that is Region).Country.Id
and赋值objItem.Country.Name
。这意味着如何为嵌套属性分配值,而不是每次都创建实例和分配。
提前致谢。!
c# - 通过反射填充枚举数组
我有一个读取一些 XML 并填充对象的方法。这是通过基于 XML 中的元素名称计算对象上的属性名称的反射来完成的。这适用于基本对象类型,但我正在努力处理枚举数组。
因此,我的枚举数组属性有一个 PropertyInfo 对象(我们称之为属性),并且我有一个字符串值(我们称之为值),其中包含表示枚举值的逗号分隔数字(例如“1,3,5”)。
我努力了:
property.SetValue(this, value.Split(',').Select(i => int.Parse(i)).ToArray(), null);
和
property.SetValue(this, value.Split(',').Select(i => Enum.ToObject(property.PropertyType.GetElementType(), int.Parse(i))).ToArray(), null);
但没有喜悦。在第一个代码示例中,Select.ToArray 的结果是一个 int[],然后引发解析错误。与第二种情况类似,但 Select.ToArray 返回一个 object[] 并再次引发解析错误。
我想写这个好像枚举类型是未知的。
有任何想法吗?
c# - 如何知道 PropertyInfo 是否为 MEF 导入
MyProperty
假设我有一个由 MEF 组成的类如下:
在使用反射检查此程序集时,是否可以确定该属性是否由 MEF 导入?我注意到课堂上有一个Attributes
属性,PropertyInfo
但它是空的。
vb.net - VB.NET - 如何从 PropertyInfo 获取程序集?
我需要能够使用反射动态地实例化一个对象。此时我有一个PropertyInfo
并且需要在调用该方法Assembly
之前获取该对象的。CreateInstance
代码如下所示:
问题是:如何从对象中获取需要实例化的PropertyInfo
对象的程序集?是否可以 ?如果没有,有什么办法呢?
我过去总是使用相同的程序集,所以这样做的方式并不是真正动态的。现在对象来自多个程序集,不能像以前那样完成。
.net - 为什么 PropertyInfo SetValue 和 GetValue 这么慢?
为什么PropertyInfo
获取和设置属性的方法这么慢?如果我使用 构建委托Reflection.Emit
,它会快得多。
他们是否在做一些重要的事情,以便他们花费的时间是合理的?那就是......我是否通过使用Reflection.Emit
构建委托而不是使用 PropertyInfo 的GetValue
和SetValue
(除了开发速度)而遗漏了一些东西?
PS:请举证,不要只凭猜测!
c# - 从 PropertyInfo 获取 byte[] 返回 NULL
我正在尝试使用反射获得 Byte[] 。不幸的是结果它总是NULL。该属性填充了数据。这是我的代码片段。
这是工作代码:
c# - 动态 Getvalue 返回对象转换为 PropertyInfo.PropertyType
我的问题是:如何使
返回值转换为 PropertyType,而不是返回对象。
我试过 Convert.ChangeType 但不是运气。
谢谢你。
更新1:
更多详情:
我的代码:
和
因为我不能动态转换每个我无法比较的关系项目显示,所以查询(Linq)使用数据库进行操作。
c# - Foreach 更改属性。什么是 PropertyInfo?
我一直在阅读旧问题和搜索 MSDN 帮助,但我无法真正理解 PropertyInfo 是什么,特别是与遍历数组列表的问题有关
c# foreach(对象中的属性)...有没有一种简单的方法可以做到这一点?)
我做了一个简单的类
然后我将类对象添加到列表中。我想遍历列表,只更改每个对象的属性
但我得到一个错误。在链接的问题(上面)中,它说使用 PropertyInfo 而不是'double。应该替换 myProperry 的“双重”的 PropertyInfo 是什么,它代表什么?
c# - 合并具有嵌套类的同一类的两个对象
我有一些由其他人提供的用于序列化的类。这些类由许多具有默认值的参数构成。我需要使用其他默认值来启动它们。它是这样实现的:
这就是每个继承类的标准。我还有一些其他信息需要启动,主要在子标题中。
我创建了自己的 SubHeader3 对象,并在他们的类中创建了一个构造函数(用于测试目的),该构造函数接受该对象。我试图通过这样的泛型用我的更新默认值
但这仅适用于 SubHeader3 类中的值,不适用于嵌套的 SubSubClass。这是实现这一目标的最佳方法吗?如何在编译器安全的情况下让它覆盖子类。还是我以错误的方式接近这个?