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);  // 异常
    }
}
相关推荐
WarrenMondeville33 分钟前
1.Unity面向对象-单一职责原则
unity·设计模式·c#
寒风暖哥3 小时前
Oracle视图查询返回空数据集的分析
oracle·c#
万兴丶3 小时前
Unity用C#完成抖音小游戏接入引力引擎(Gravity Engine)完整指南,一篇文章讲清楚!
unity·c#·游戏引擎·抖音
福赖4 小时前
《C#反射机制》
开发语言·c#
向上的车轮4 小时前
熟悉C#如何转TypeScript?
开发语言·typescript·c#
我是唐青枫5 小时前
C#.NET ReaderWriterLockSlim 深入解析:读写锁原理、升级锁与使用边界
开发语言·c#·.net
The Sheep 20235 小时前
C# 操作XML
xml·前端·c#
JosieBook6 小时前
【C#】C# 中的 enum、struct 和 class 对比总结
开发语言·算法·c#
Scout-leaf7 小时前
WPF新手村教程(七)—— 终章(MVVM架构初见杀)
c#·wpf
ZoeJoy88 小时前
机器视觉C# 调用相机:从 USB 摄像头到海康工业相机(WinForms & WPF)
数码相机·c#·wpf