微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我可以强制C#中的命名空间之间的依赖关系

我可以限制特定命名空间中的类引用另一个特定命名空间中的类吗?两个名称空间都存在于同一.NET程序集中.

例:

namespace LegacyCode
{
    class LegacyClass { ... }
}

namespace NewCode
{
    class NewClass {...}
}

我不希望’NewCode’中的类能够引用’LegacyCode’中的类.

选项:

>有不同的组件(使部署更难,构建需要更长时间)
>使用像NDetect这样的工具(花钱!)

有没有人有任何其他想法?

解决方法

考虑使用 Obsolete attribute标记类.这将导致任何本身不标记为“已过时”的代码在编译期间生成警告.

在项目文件的“构建”选项卡上启用“将警告视为错误”设置,以使此警告无法通过编译而无法编译.

编辑:

同意单独的程序集是一个很好的策略,可以帮助淡出这段代码.这不会阻止人们提到它.过时的属性清楚地表明这个代码已经过时了.

编辑#2:

感谢Dan Tao指出了Obsolete属性overloaded constructor.这意味着您可以强制是否应将某事物的使用视为错误,而不必将处理警告视为错误.还有用的是指定指示用户解决方法的消息的选项.编译期间在错误/警告中显示此消息.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐