如何确定所有对象是否在给定的命名空间中可序列化?

Dan*_*anP 3 .net serialization build-process

一些背景知识:我们要求所有DTO对象都是可序列化的,以便它们可以存储在会话中或缓存中.

您可以想象,这非常烦人且容易出错...是否有任何自动化方式(理想情况下作为构建过程的一部分)使用Visual Studio 2010来确保命名空间中的所有类都使用[Serializable]属性进行标记?

Rob*_*ine 5

NDepend是您可能想要考虑的一个很容易集成到构建中的工具.这使您可以运行各种代码指标,然后可以使用它们来警告/失败构建.

在CQL(NDepend中的内置查询语言)中,您可以编写如下内容:

WARN IF Count > 0 IN SELECT TYPES FROM NAMESPACES "namespace" WHERE !IsSerializable  
Run Code Online (Sandbox Code Playgroud)

显然,这只会找到解决方案中程序集中包含的类型的命名空间,但我认为这就是你的意思.

NDepend可以作为VS内部构建的一部分自动运行,也可以在单独的构建服务器上运行.它也可以作为独立应用程序运行.