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);  // 异常
    }
}
相关推荐
SunnyDays10118 小时前
如何使用 C# 创建、修改和删除 Excel 中的 VBA 宏(无需Microsoft Excel)
c#·excel·vba宏·创建vba宏·修改vba宏·删除vba宏
唐青枫9 小时前
C#.NET gRPC 深入解析:Proto 定义、流式调用与服务间通信取舍
c#·.net
水深00安东尼10 小时前
C# 鼠标点击小游戏
c#
波波00710 小时前
每日一题:C#中using的三种用法
开发语言·c#
游乐码10 小时前
c#万物之父
开发语言·c#
xiaoshuaishuai810 小时前
C# Chrome安全机制解析
开发语言·visualstudio·c#
游乐码10 小时前
c#字符串函数
开发语言·c#
asdzx6711 小时前
C#:通过模板快速生成 Word 文档
开发语言·c#·word
游乐码11 小时前
c#StringBuilder
开发语言·c#
CSharp精选营11 小时前
都是微软亲儿子,WPF凭啥干不掉WinForm?这3个场景说明白了
c#·wpf·跨平台·winform