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);  // 异常
    }
}
相关推荐
asdzx6713 小时前
使用 C# 添加或读取 Excel 公式:完整指南
开发语言·c#·excel
加号313 小时前
【C#】 中 BCD 字节数组转十进制字符串的原理与实现思路
开发语言·c#
周杰伦fans13 小时前
C# 从 List 中移除另一个集合
windows·c#
大空大地202613 小时前
C#进阶语法**总结
c#
ez52fF0k813 小时前
.NET11云原生CI/CD在云原生应用持续集成与交付安全加固
前端·c#·交互
没什么本事1 天前
关于C# panel 添加lable问题 -- 明确X和Y 位置错误
android·java·c#
火星papa1 天前
C# 实现平滑流畅的进度条ProgressBar
c#·进度条·progressbar·平滑流畅
游乐码1 天前
UnityGUI(五)GUI控件综合使用
开发语言·unity·c#
程序leo源1 天前
C语言知识总结
c语言·开发语言·c++·经验分享·笔记·青少年编程·c#
烛阴1 天前
TEngine 入门系列(二):三件套环境搭建 -- Unity + TEngine + AI 助手
前端·c#·unity3d