<分区>
我在 C# 中有一个 [Serializable] 类,它有很多字段,每个字段都是一个不同的类。我使用序列化来保存/加载此类的实例,但我经常会忘记在某处添加 [Serializable] 属性并且只在运行时学习它。可以在编译时检查吗?
比如这段代码,
[Serializable]
class House {
List<Room> Rooms;
}
class Room
{
}
不应通过验证,因为 Room 类不可序列化。
<分区>
我在 C# 中有一个 [Serializable] 类,它有很多字段,每个字段都是一个不同的类。我使用序列化来保存/加载此类的实例,但我经常会忘记在某处添加 [Serializable] 属性并且只在运行时学习它。可以在编译时检查吗?
比如这段代码,
[Serializable]
class House {
List<Room> Rooms;
}
class Room
{
}
不应通过验证,因为 Room 类不可序列化。
最佳答案
不,您在编译时无能为力。
但是,为此添加单元测试很容易 - 您可以在程序集中找到每个可序列化的类,然后递归查找所有字段并检查每个字段是否可序列化。当然,更简单的方法是简单地序列化一个实例 :)
单元测试不如编译时检查好,但总比只“实时”做要好。
关于c# - 在 C# 中,我可以在编译类型中检查一个类是否可序列化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15624647/