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);  // 异常
    }
}
相关推荐
进击的编程阿伟7 小时前
C#开发工程师-面经
面试·c#
缺点内向7 小时前
C#实战:使用Spire.XLS for .NET 将Excel转换为SVG图片
c#·自动化·.net·excel
小曹要微笑8 小时前
C#的运算符重载
开发语言·c#·运算符重载·c#运算符重载
我是唐青枫8 小时前
C#.NET Channel 深入解析:高性能异步生产者消费者模型实战
开发语言·c#·.net
Crazy Struggle8 小时前
C# + ViewFaceCore 快速实现高精度人脸识别
c#·人脸识别·.net·开源项目
小曹要微笑8 小时前
委托(Delegate)在C#中的概念与应用
前端·javascript·c#
人工智能AI技术10 小时前
Oracle裁员3万人的警钟:C#程序员如何构建AI工具链反杀,从“被替代“到“驾驭AI“
人工智能·c#
小曹要微笑10 小时前
事件(Event)在C#中的概念与应用
c#·委托·事件·c#事件
xgstb10 小时前
如何使用C#与SQL Server数据库进行交互
数据库·c#·交互
未来之窗软件服务12 小时前
浏览器开发CEF(二十二)C#闪退处理——东方仙盟元婴期
开发语言·人工智能·c#·浏览器开发·仙盟创梦ide·东方仙盟