a.t*_*aby 1 c# system.reflection
让我们假设,我们有以下三种类型:
class class1{ public static int serial=1};
class class2{ public static int serial=2};
class class3{ public static int serial=3};
Run Code Online (Sandbox Code Playgroud)
序列可以是静态字段或属性,如:
class class1{ public override byte serial {get{return 0x01; }}};
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我从某处收到序列值,需要反映相应的类.是否可以使用该项目的序列字段反映任何这些类型?我是否必须在序列ID和类名之间创建一个映射表来查找反射的相关类名?或System.Reflection允许我直接从其字段或属性值中找到类?我认为这将是一种更好的方法,因为我们不需要为新类型编辑表格.
谢谢你的帮助.
是的,您可以按字段的值获取类型:
var type = Assembly.GetExecutingAssembly()
.GetTypes()
.FirstOrDefault(x => x.GetField("serial") != null &&
(int)x.GetField("serial").GetValue(null) == 2)
Run Code Online (Sandbox Code Playgroud)
如果类型在另一个组件,而不是当前执行的程序集定义,那么你需要使用方法首先要获取组件Assembly类(如Load,LoadFrom,LoadFile).
并且字段应该按static顺序使用,否则您需要一个实例来获取字段值并将其传递给GetValue方法而不是null.
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |