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);  // 异常
    }
}
相关推荐
hez20105 小时前
TypedSql:在 C# 类型系统上实现一个 SQL 查询引擎
c#·.net·.net core·compiler
世洋Blog7 小时前
利用<<左移运算符优雅的设计游戏能力的任意组合和判断
游戏·unity·c#
曹牧7 小时前
C#中,#region和#endregion
开发语言·c#
czhc11400756637 小时前
c# 1121 构造方法
java·javascript·c#
在路上看风景9 小时前
2.3 C#装箱和拆箱
开发语言·c#
葛小白111 小时前
C#进阶14:C#全局路径规划算法_RRTstar
c#·路径规划·rrtstar算法
Tiger_shl13 小时前
SqlConnection、SqlCommand 和 SqlDataAdapter
开发语言·数据库·c#
yi碗汤园15 小时前
Visual Studio常用的快捷键
开发语言·ide·c#·编辑器·visual studio
MM_MS17 小时前
C#小案例-->汽车租聘系统计价功能
c#·汽车·简单工厂模式·抽象工厂模式·visual studio