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);  // 异常
    }
}
相关推荐
yngsqq1 小时前
二维异形排版、二维装箱(NPF碰撞检测)——CAD c#二次开发
开发语言·javascript·c#
切糕师学AI1 小时前
.NET 如何引用两个不同版本的dll?
c#·.net
烛阴3 小时前
不只是Public与Private:C#访问修饰符全方位解读
前端·c#
秋雨雁南飞3 小时前
c# 多项目编译发布
c#
张人玉5 小时前
C#Https协议相关知识点
开发语言·https·c#
Byron Loong5 小时前
【C#】VS调试——带参调试
开发语言·c#
故事不长丨5 小时前
解锁C#编程秘籍:封装、继承、多态深度剖析
开发语言·数据库·c#
努力小周5 小时前
基于STM32物联网智能老年人防摔系统
stm32·单片机·嵌入式硬件·物联网·c#·课程设计
FuckPatience5 小时前
C# 补码
开发语言·算法·c#
烽火聊员6 小时前
SSLSocket 服务器端WPF C#测试代码
开发语言·c#·wpf·ssl