问题标签 [fieldinfo]
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.
c# - 如何比较 FieldInfo 的实例值?
从不返回“是”。
编辑:事先不知道类型是什么。所以我不能:(bool)field.GetValue(instance1)
。
c# - System.Reflection,如何获取字段和属性位置?
问题:我使用下面的类将 csv 文件序列化为
List<MyCsvFileType>
然后我 List<MyCsvFileType>
使用转换为数据表
我的转换为
(下面也列出)。现在的问题是,MyConvertTo 改变了列的位置,这意味着所有属性都排在所有公共变量之后。
这导致的问题是,之后我使用 SqlBulkCopy 将 DataTable 复制到数据库表中。不幸的是,SqlBulkCopy 使用列的索引而不是列名来将数据表自动映射到数据库表。
这意味着我会收到很好的错误消息,因为它试图在浮动区域字段中插入字母数字 AP_FL_CADKey(因为我的数据库表与类具有相同的布局)......
有什么方法可以获取 MyConvertTo 中字段和属性的位置吗?所以我不必更改我的数据库表(很多)或编写我自己的 BulkCopy 实现,因为我也不想手动设置数据表和数据库表之间的映射?
在最坏的情况下,通过按字段偏移量排序应该是可能的......
班级:
我的转换:
c# - 来自通用基类中的字段的 C# 反射 GetValue
问题是我们不能获取仅位于具有泛型类型的基类中的字段(非泛型)的值。请参阅下面的代码片段。打电话
将抛出异常消息:不能对 Type.ContainsGenericParameters 为 true 的类型的字段执行后期绑定操作。
我们的设计要求我们在获得任何实际对象的实例之前首先获得 FieldInfo。所以我们不能使用
谢谢
c# - 如何在 Windows Phone 7 中的对象上设置结构类型的字段
我在 Windows Phone 7 应用程序中的对象上设置字段时遇到问题(我怀疑它与紧凑框架有关,而不是特定于 Windows Phone 7)。我相信这是特定于设置struct
类型的值。通常我使用以下内容:
不幸的是SetValueDirect
,Windows Phone 7 上不存在,并且简单地使用SetValue
不会对目标做任何事情。是否有另一种方法可以struct
通过反射在 WP7 上设置字段?
c# - 使用 System.Reflection 检索 const 字符串字段列表
我已经创建了一个类(显示其中一个),其中包含我想要迭代的 const 字符串。
上面的代码显示了我的尝试,但即使经过大量试验和错误,我仍然无法正确完成。
我希望将所有列的列表作为 const 集合数组或列表。
c# - 具有数组参数和任意元素类型的 C# FieldInfo.SetValue
我正在尝试使用反射设置一个数组字段,如下所示:
该字段具有类型B[]
。B
继承自,并且在编译时不知道
A
确切的类型。返回,但里面的真正元素都是's. 是一种库方法,不能更改。B
GetElementsInSomeWay()
A[]
B
GetElementsInSomeWay()
我最多能做的就是得到B
with System.Type type = field.FieldType.GetElementType()
。但是我不能将数组转换为所需的类型,例如
someArray as type[]
因为[]
在声明数组类型之前需要一个确切的类型。或者我在这里错过了什么?System.Type
如果在运行时使用变量知道该类型,我可以声明某种类型的数组吗?
以直接方式执行此操作会产生以下错误(这里A
isUnityEngine.Component
和B
isAbilityResult
也可以是其他几十个类之一,都继承自(可能通过长继承链)UnityEngine.Component
):
c# - 如果使用反射的参数名称和字段名称不同,如何检索参数的值?
如果参数名称和字段名称不同,如何检索参数的值?到目前为止,我已经研究了大约 2 天,但无法找到解决方案。任何帮助表示赞赏。我在下面提供了示例代码。
c# - 如何查找成员变量是否为只读?
我如何找到是否sum
是只读的?对于属性,我可以PropertyInfo.CanWrite
查找成员是否具有写访问权限。
c# - 有没有办法创建一个委托来获取和设置 FieldInfo 的值?
对于属性GetGetMethod
,GetSetMethod
我可以这样做:
和
但是我该怎么做FieldInfo
呢?
我不是在寻找代表GetValue
和SetValue
(这意味着我每次都会调用反射)
但如果这里有CreateDelegate
办法?我的意思是由于 assignments 返回一个 value,我可以将 assignments 视为一种方法吗?如果是这样,有没有一个MethodInfo
句柄?换句话说,我如何将MethodInfo
设置和从成员字段获取值的权利传递给CreateDelegate
方法,以便我得到一个可以直接读取和写入字段的委托?
我可以构建表达式并编译它,但我正在寻找更简单的东西。最后,如果问的问题没有答案,我不介意走表达路线,如下图:
还是我在追求不存在(因为我还没有看到类似的东西)?
.net - 为什么基类的成员与派生类中的相同成员不同?
这是这个问题的后续:Lambda 表达式没有返回预期的 MemberInfo
s也是MethodInfo
如此。
Human
我可以理解什么时候是接口,或者什么时候name
是Human
抽象/虚拟的,必须有所不同。但是为什么密封类型会如此呢?不正是name
of吗?Man
name
Human
澄清:正如乔恩所说,他们ReflectedType
的 s 是不同的。ReflectedType
在决定接口成员或被覆盖成员的相等性时,在相等性应该派上用场,因为它们是不同的。但我认为不应该考虑决定上述简单案例的平等性。可能是设计团队想要保持一致。只是想知道是什么原理促使框架设计人员ReflectedType
在决定跨多个类的同一成员的相等性时考虑属性。