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);  // 异常
    }
}
相关推荐
不绝1912 小时前
C#核心:多态
开发语言·c#
橙露3 小时前
C#在视觉检测中的优势:工业智能化转型的利器
开发语言·c#·视觉检测
爱说实话5 小时前
C# DependencyObject类、Visual类、UIElement类
开发语言·c#
TDengine (老段)5 小时前
TDengine C# 语言连接器进阶指南
大数据·数据库·人工智能·物联网·c#·时序数据库·tdengine
a***59265 小时前
C++跨平台开发:挑战与实战指南
c++·c#
leo__5206 小时前
基于C#实现软件注册码注册机制
开发语言·c#·哈希算法
cjp5607 小时前
019.C#管道服务,两软件间用json数据交互
开发语言·c#·json
我的炸串拌饼店16 小时前
火山方舟API C#服务类设计解析
c#·调用火山方舟api
观无17 小时前
visionPro图像预处理
c#
不绝19117 小时前
C#核心:继承
开发语言·c#