Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用反射c访问只读静态字段的值会导致对象引用错误_C#_.net_Casting_System.reflection_Bitmask - Fatal编程技术网

C# 使用反射c访问只读静态字段的值会导致对象引用错误

C# 使用反射c访问只读静态字段的值会导致对象引用错误,c#,.net,casting,system.reflection,bitmask,C#,.net,Casting,System.reflection,Bitmask,使用反射从静态类获取只读静态field ViewDepartmentCompareReport的值时出现问题 这段代码在我尝试过的大多数系统(包括生产环境中的一些系统)中运行良好,但出现了一个错误 发生对象引用错误 我在这里创建了这段代码的一个示例 在转换value=BitMaskval值时引发错误 请查看代码,并指出我所做的任何错误是否会导致通过反射访问ViewDepartmentCompareReport字段时出现对象引用错误 这个错误可能是特定于系统的吗?比如说,在x86系统上执行的代码与

使用反射从静态类获取只读静态field ViewDepartmentCompareReport的值时出现问题

这段代码在我尝试过的大多数系统(包括生产环境中的一些系统)中运行良好,但出现了一个错误

发生对象引用错误

我在这里创建了这段代码的一个示例

在转换value=BitMaskval值时引发错误

请查看代码,并指出我所做的任何错误是否会导致通过反射访问ViewDepartmentCompareReport字段时出现对象引用错误


这个错误可能是特定于系统的吗?比如说,在x86系统上执行的代码与在x64系统上执行的代码的行为不同?

我认为问题确实出在这里:

var fields = t.GetFields(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Static);
var val = fields[0].GetValue(null);
var name = fields[0].Name;
获取字段列表,然后引用列表中的第一个字段,并假设它返回位掩码,这是有风险的。如果要获取第一个返回位掩码的字段,可以执行以下操作:

var fields = t.GetFields(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Static);
var field = fields.First(_ => _.FieldType == typeof(BitMask));
var val = field.GetValue(null);
var name = field.Name;
如果该类型没有具有位掩码类型的字段,您仍然应该将其放入try-catch块中,但这至少应该让您了解如何继续前进


希望这会有所帮助。

可能该值从未设置过?请在问题中发布代码,以便人们可以帮助您。我添加了此链接,我使用的代码仅用于说明。我有一个循环,然后在字段{BitMask bm=BitMaskfield.GetValuenull;}中强制转换类似于forvar的字段。我用来读取值的类只包含一个字段,没有其他字段是类示例,是静态的,只有一个只读字段ViewDepartmentCompareReportI,我在发布代码时知道,但在列表中引用特定索引仍然有风险,因为存在潜在的未知因素。如果无法在本地重现问题,则尤其如此。将结果集过滤到您知道需要的内容,可以减少甚至消除未知因素。