具体来说,我们使我们的应用程序与Out Of Process会话状态服务器兼容,其中会话中保存的所有类型都必须是可序列化的。
有没有办法在编译时看到放入HttpSessionState的任何类型都标有Serializable属性。这个“无效”代码
的内容public static void Put<T>( string key, T value ) where T : IsMarkedWitheSerializableAttribute
{
HttpContext.Current.Session[key] = value;
}
答案 0 :(得分:3)
不,没有像这样的通用约束。属性通常用于表示某种类型的实现。您必须要么引入自己的标记接口(urgh)或插入执行时间检查,并希望您的测试足够。
Eric Lippert's post about properties and attributes很高兴在这里阅读。这不是相当相同的问题,因为它更多地讨论了对象与类型,但它仍然与表达 mechanics 的属性相关。
答案 1 :(得分:2)
您可以编写自定义FxCop规则来为此方案生成警告。
Jason Block在his site上有一个示例规则。