【问题标题】:How to set a default namespace for classes when there are two similar classes in different namespaces当不同命名空间中有两个相似的类时,如何为类设置默认命名空间
【发布时间】:2009-05-13 19:12:10
【问题描述】:

好的,既然进入 2.5 版 Nunit 给我带来了各种各样的问题,因为他们将静态类 Is 引入了 nunit.framework 命名空间。

如果 Rhino.Mocks 和其他一些框架不使用 Is 静态类,那就太好了。所以现在如果我升级到 2.5,我使用 rhino mocks 约束的大部分代码都不会编译。

有没有办法在项目级别配置 Visual Studio/C# 编译器以了解当我说 Is 时我的意思是 Rhino Mocks 命名空间?

PS。开源作者,我知道你喜欢流畅的界面,但是当它们与其他框架发生冲突时不要使用这些常用词!一些带有 lambda 的闭包怎么样,你仍然可以做类似 myVar.Should(be=>be.True()) 的事情?

【问题讨论】:

    标签: .net visual-studio namespaces conflict


    【解决方案1】:

    我不知道 NUmit 上下文,但也许别名机制可以帮助您:

    namespace N1
    {
      class C { }
    }
    
    namespace N2
    {
        class C { }
    }
    
    namespace NamespaceDemos
    {
        using C1 = N1.C;
        using C2 = N2.C;
    }
    

    【讨论】:

    • 查看我对@McWafflestix 的回复,这是有效的,但不能摆脱破坏我项目的不可比性。
    【解决方案2】:

    在文件顶部使用using alias directiveIs 的非限定引用指向Rhino 类型。

    using Is = Rhino.Mocks.Constraints.Is;
    

    不幸的是,我认为在项目级别没有办法做到这一点。但这至少比搜索和替换所有参考文献要好。

    【讨论】:

      【解决方案3】:

      尝试使用using 指令。

      【讨论】:

      • 不好,我已经有了使用 Rhino Mocks Is 的代码。 NUnit 虽然添加了 Is 类到它的基目录。在我使用 rhino mocks Is 之前,我必须通过我的代码库添加一个别名。那时还不如写我自己的扩展。
      • 我知道这听起来很傻,但是您是否尝试过仅进行全局搜索并替换以将其替换为完全限定名称?
      • 嗯..是的,这会起作用,但是我必须完全合格的 Rhino Mocks Is 类(我经常使用),这样 Nunit 才能拥有它的“Is”类(我没有根本不使用)......丑
      猜你喜欢
      • 2022-12-31
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 2011-12-01
      • 1970-01-01
      • 2010-11-12
      相关资源
      最近更新 更多