c# - 在 C# (VS-2010) 中,如果使用了某个库类,是否有办法使前端构建失败? (通常什么时候编译就好了?)

标签 c# visual-studio-2010

我正在写一个库,里面有一堆类,供多个前端使用(一些前端共享相同的类)。对于每个前端,我都保留了一个手工编辑的列表,其中列出了它使用的类(特定 namespace 的)。如果前端尝试使用不在此列表中的类,则会出现运行时错误。我的目标是将这些错误移到编译时。

如果你们中有人好奇,这些是“映射的”nhibernate 类。我试图限制哪个前端可以使用什么,以便减少启动时间,这只是为了我自己的理智。最终会有数百个这样的东西,如果某处有一个列表告诉我哪些前端使用我被迫维护的东西,那将是非常好的。我似乎无法摆脱让每个前端使用的子类,而且我不能使用任何包装器类......请把它当作给定的!

理想情况下,如果有人胆敢尝试使用有问题的类,我希望 visual studio 用红色下划线标出它们,并在错误窗口中显示一个很好的自定义错误。我还希望它们从智能感知窗口中消失。是否可以定制一个项目来做这些事情?

我也愿意使用预构建程序来分析这类事情的代码,尽管这不会那么好。有人知道执行此操作的工具吗?

谢谢

艾萨克

最佳答案

假设您有一组类 F。您希望这些类仅对特定程序集 A 可见。然后将 F 中的这些类分离到一个单独的程序集中,并将它们标记为 internal 并将该程序集上的 InternalsVisibleTo 设置为 true 对于这个特定程序集A

如果您尝试从包含 F 的程序集中未标记为 InternalsVisibleTo 的任何程序集 A' 使用这些类,那么您如果您尝试在 A' 中使用来自 F 的任何类,将会出现编译时错误。

I also want them GONE from the intellisense windows. Is it possible to customize a project to do these things?

我上面介绍的解决方案也会出现这种情况。它们在包含 F 的程序集内部,并且在包含 F.

但是,我通常发现 InternalsVisibleTo 是一种代码味道(并不总是,只是经常)。

关于c# - 在 C# (VS-2010) 中,如果使用了某个库类,是否有办法使前端构建失败? (通常什么时候编译就好了?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7018618/

相关文章:

c# - 有没有办法判断一个参数是否有这个修饰符?

html - Visual Studio(2012 及更低版本)删除 CSS 属性

visual-studio-2010 - 在 TFS 中合并文件时如何避免编码冲突?

c# - 将 Char 附加到数组中的每个元素

c# - 属性的 MinValue 和 MaxValue 属性

c# - VOIP:PC 到 PC 通话和 session

visual-studio-2010 - 构建自动部署到 Azure 的工具?

javascript - 如何在angularjs中使用文本框值检查表格?

javascript - JSON 的智能感知?

c++ - 为什么字符串文字比较是 C++ 中实现定义的行为?