c# - 在 C# 中,我可以在编译类型中检查一个类是否可序列化吗?

标签 c# .net serialization compile-time

<分区>

我在 C# 中有一个 [Serializable] 类,它有很多字段,每个字段都是一个不同的类。我使用序列化来保存/加载此类的实例,但我经常会忘记在某处添加 [Serializable] 属性并且只在运行时学习它。可以在编译时检查吗?

比如这段代码,

[Serializable]
class House {
 List<Room> Rooms;
}
class Room
{
}

不应通过验证,因为 Room 类不可序列化。

最佳答案

不,您在编译时无能为力。

但是,为此添加单元测试很容易 - 您可以在程序集中找到每个可序列化的类,然后递归查找所有字段并检查每个字段是否可序列化。当然,更简单的方法是简单地序列化一个实例 :)

单元测试不如编译时检查好,但总比只“实时”做要好。

关于c# - 在 C# 中,我可以在编译类型中检查一个类是否可序列化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15624647/

相关文章:

c# - 如何在 mvc c# 中获取 HttpContext.Current.User 作为自定义主体

c# - 将数字与字符串中的其他符号分开

C# 没有在代码中或使用调试器捕获异常

.net - 如何在 asp :DataGrid for CSS? 中的第一个表头上放置一个 ID

java - 在数据库的单列中存储各种对象类型

c# - 如何模拟静态引用的程序集?

c# - 在另一个线程上创建 WPF 进度窗口

c# - 在方法参数中限制枚举值

serialization - IQueryable 序列化 (web api)

java - ActionForm 内部的同步方法