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);  // 异常
    }
}
相关推荐
Vae_Mars7 分钟前
华睿MVP:C#脚本的应用一
笔记·c#
筱璦1 小时前
期货软件开发「启动加载页 / 初始化窗口」
前端·c#·策略模式·期货
qq_390760391 小时前
简单的线程安全日志记录器
开发语言·数据库·c#
醉酒柴柴2 小时前
word创建样式以后应用于所有新文件
开发语言·学习·c#·word
JosieBook3 小时前
【WinForm】C# WinForms 跨线程更新 UI 避坑指南
开发语言·ui·c#
阿蒙Amon4 小时前
C#常用类库-详解Playwright
开发语言·c#
JQLvopkk6 小时前
DeepSeek赋能新一代高智能化SCADA
人工智能·c#
qq_454245036 小时前
组件生命周期管理器架构:ECS事件处理的优雅实践
架构·c#
bugcome_com6 小时前
C# 多线程实战指南:从线程创建到管理与终止
c#
我是唐青枫6 小时前
C#.NET 源生成器 深入解析:编译时代码生成与增量生成器实战
c#·.net