有没有办法以某种方式标记我不能控制的类型作为过时?基本上我想将ObsoleteAttribute添加到我不想在我的.net项目中使用的类型(即SerializableAttribute)
我相信我可以用FxCop做类似的事情,但理想情况下我希望编译器已经为“灰名单”类型生成警告?
这应该是在每个项目级别,但遗憾的是“扩展属性”不存在,并且在运行时添加它们对于ObsoleteAttribute来说太迟了......
编辑:为了澄清,我不想阻止使用类型(请记住,默认情况下ObsoleteAttribute只生成警告,而不是错误!),我只是想生成警告当它们在99%的情况下被使用时,使用它们是错误的(即SerializableAttribute)。另外,我不仅指代.net类型,还指某些第三方类型。这更像是一个提醒。我猜FxCop是我最好的选择。
答案 0 :(得分:3)
没有办法直接这样做; FxCop将是您最好的选择。但是,您可以获得创意,并重新声明类型。警告:这是狡猾的狡猾!但它会起作用:
namespace System.Text {
[Obsolete("Pah; who wants performance...", true)]
public class StringBuilder { }
}
这太讨厌了!但需要extern alias
来解决问题。当然,它也可能带有一些基于字符串的反射(Activator.CreateInstance
)。
答案 1 :(得分:-1)
不,我感觉很好。由于它们不在你的控制之下,你无权废弃它们;)所以说。
FxCop也做不到。 xCop可以说你是否使用了一个,但这与向它们添加过时的属性不同。
我认真地认为类型“我不想在我的.net项目中使用”的整个想法很明显 - 因为你将不得不做一些没有结果的TON工作。根据定义不使用无用的类型(除非你喜欢包含你真正不需要的东西)。废弃它们并没有取得任何成就。
你可能会感到惊讶......也许有一天你需要其中一些。
从未参加过这种方法的项目。