0

具体来说,我们正在使我们的应用程序与进程外会话状态服务器兼容,其中保存在会话中的所有类型都必须是可序列化的。

有没有办法在编译时查看放入 HttpSessionState 的任何类型都标记有 Serializable 属性。类似于此“无效”代码的内容

public static void Put<T>( string key, T value ) where T : IsMarkedWitheSerializableAttribute
{
   HttpContext.Current.Session[key] = value;
}
4

2 回答 2

3

不,没有这样的通用约束。属性通常用于指示有关类型实现的某些内容。您必须引入自己的标记接口 (urgh) 或插入执行时检查并希望您的测试足够。

Eric Lippert 关于属性和属性的文章很适合在这里阅读。这不是一个问题,因为它更多地谈论对象与类型,但它在表达机制的属性方面仍然相关。

于 2011-01-26T10:02:01.377 回答
2

您可以编写自定义 FxCop 规则来为此场景生成警告。

Jason Block 在他的网站上有一个示例规则。

于 2011-01-26T10:28:33.773 回答