C#反射的NullReferenceException

背景

xml文件中有些元素的属性被删除,导致文件无法被读取(C#)。

调试之后发现,因为属性被删除,读进来会保持默认值null,在后续的反射中如果用这个null给字符串属性赋值,会抛异常。

另外发现前面还有其他一些属性也被删掉了,但并不会导致异常,只因它们的类型是int。

示例

csharp 复制代码
using System.Reflection;
class Program
{
    public int A
    {
        set;
        get;
    }

    public string B
    {
        set;
        get;
    }

    static void Main(string[] args)
    {
        Program program = new Program();
        PropertyInfo pa = program.GetType().GetProperty("A");
        pa.SetValue(program, null, null);  // 正常
        PropertyInfo pb = program.GetType().GetProperty("B");
        pb.SetValue(program, null, null);  // 异常
    }
}
相关推荐
矶鹬笛手15 小时前
(2.1) 信息技术及其发展
sql·计算机网络·c#
u***276116 小时前
C#数据库操作系列---SqlSugar完结篇
网络·数据库·c#
笑非不退17 小时前
C# c++ 实现程序开机自启动
开发语言·c++·c#
周杰伦fans20 小时前
[特殊字符] 代理模式超详细讲解 ——.NET
数据库·c#·代理模式
用户83562907805121 小时前
C# 高效生成 Word 表格:复杂表格创建实战指南
后端·c#
屠夫21 小时前
C# LINQ
c#
光头闪亮亮1 天前
电子发票解析工具-c#桌面应用开发-DataGridView表格控件使用详解
c#
周杰伦fans1 天前
C# 中的 `Hashtable`
开发语言·c#
lingggggaaaa1 天前
免杀对抗——C2远控篇&PowerShell&有无文件落地&C#参数调用&绕AMSI&ETW&去混淆特征
c语言·开发语言·笔记·学习·安全·microsoft·c#
咩图1 天前
WPF+Prism8.0.0.1909+C#创建一个桌面程序
c#·wpf·prism