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);  // 异常
    }
}
相关推荐
2501_9307077813 小时前
使用C#代码在 PowerPoint 中创建组合图表
开发语言·c#·powerpoint
Full Stack Developme15 小时前
Hutool DFA 教程
开发语言·c#
xiaoshuaishuai815 小时前
【无标题】
开发语言·windows·c#
SunnyDays101115 小时前
C# 如何快速比较 Word 文档并显示差异
c#·对比 word 文档·比较 word 文档
LF男男15 小时前
TouchPad(单例)
unity·c#
武藤一雄1 天前
19个核心算法(C#版)
数据结构·windows·算法·c#·排序算法·.net·.netcore
不会编程的懒洋洋1 天前
C# Task async/await CancellationToken
笔记·c#·线程·面向对象·task·同步异步
lhbian1 天前
AI编程革命:Codex让脚本开发提速10倍
开发语言·汇编·jvm·c#
LF男男1 天前
TouchManager
unity·c#
xiaoshuaishuai81 天前
C# Submodule 避坑指南
服务器·数据库·windows·c#