问题标签 [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# - 动态分配字段
我正在尝试生成用于将字段值动态分配给动态类的代码。基本上,我理想情况下能做的就是达到这个效果:
我找不到任何适合我需要的说明。我的另一个想法是为每个字段生成一个 setter 方法并调用该方法,但如果不将其转换为 Delegate,我没有找到一种方法来执行此操作,这会生成大量样板代码。
有没有人有更好的解决方案?
编辑:问题是必须在堆栈上找到需要分配的字段,并且在分配它的时候以某种方式弹出。不幸的是,没有一个 CIL 指令支持弹出一个 fieldInfo 来分配给它,但也许还有其他我没有想到的解决方案。
EDIT2:我会提供更多的周围场景,希望上下文能让事情更清楚。
我正在尝试从基于堆栈的 vm 字节码到 CIL 制作一种“重新编译器”。有问题的字节码不像 CIL 那样访问结构中的字段,即静态访问。相反,对要访问的字段的引用被压入堆栈,store
其余的由指令处理。
以下是此字节码的示例:
我想要获得的是类似于我上面编写的代码,但 CIL 仅支持分配给在代码生成时已知的字段。
c# - 如何使用反射来获取方法的字段?
如何用户反射以获取方法内的字段?我尝试使用 MethodInfo 然后 GetFields 但返回的值不是我在方法中定义的字段。
例如,使用下面的代码,我将如何获取 LineNo 的 FieldInfo?
谢谢
c# - c#反射读取json和fieldinfo.setvalue错误
我在这里有一个问题,希望warmheat开发人员提供帮助。
这是我遇到的问题:
由于反射,我想保存类实例的字段,代码如下:
它可以工作,保存的 json 是这样的:
]
然后当我用它来填写新类实例的字段时,代码如下:
它导致错误:
ArgumentException:“System.Double”类型的对象无法转换为“System.Single”类型。System.RuntimeType.CheckValue (System.Object value, System.Reflection.Binder binder, System.Globalization.CultureInfoculture, System.Reflection.BindingFlags invokeAttr) (at :0) System.Reflection.MonoField.SetValue (System.Object obj, System.Object val,System.Reflection.BindingFlags invokeAttr,System.Reflection.Binder binder,System.Globalization.CultureInfo 文化)(在:0) System.Reflection.FieldInfo.SetValue(System.Object obj,System.Object 值)(在 :0) TestReflectEnum.ApplyFields () (在 Assets/Scripts/TestReflectEnum.cs:82)
我认为反映 fieldinfo.setvalue 需要填写确切的对象类型,所以我更改代码如下:
但仍然会导致错误:
InvalidCastException:对象必须实现 IConvertible。System.Convert.ChangeType(System.Object 值,System.Type conversionType,System.IFormatProvider 提供程序)(在:0) System.Convert.ChangeType(System.Object 值,System.Type 转换类型)(在:0)TestReflectEnum.ApplyFields () (在资产/脚本/TestReflectEnum.cs:82)
现在对我来说唯一的方法就是写出各种对象类型条件,并逐个更改类型对象,太麻烦了,我希望有一个从txt / json读取对象的通用功能,并且可以正确设置值 - -