冲突的命名空间解决方案

时间:2015-08-05 23:58:49

标签: c# .net visual-studio-2013 namespaces

我使用名为BCrypt.net的库,作者使命名空间与Class同名,因此Class完整路径为:BCrypt.Net.BCrypt,其中BCrypt.Net是命名空间,BCrypt是班级名称。

我正在尝试在我的代码中使用,就像我可以找到的所有示例一样,例如:

BCrypt.HashPassword("234");

但Visual Studio抱怨说:

  

错误3类型或命名空间名称'HashPassword'不存在于   命名空间'BCrypt'(你错过了一个程序集   参考?)

我的项目中有程序集(因为我是从NuGet获得的):

Assembly Reference

如果我在命名空间之前添加using BCrypt.Net;using BCrypt;,则错误说明相同。 我将它添加到我的命名空间中,有趣的事情发生了。我工作,代码编译和执行。但Visual Studio显示错误!我无法理解它是如何编译错误的。

namespace Test.Data
{
    using BCrypt.Net; // The 'Net' is marked with a Red Error line in VS2013
    ....
    string s = BCrypt.HashPassword("234");
  

错误3类型名称'Net'在类型>'BCrypt.Net.BCrypt'中不存在

using BCrypt = BCrypt.Net.BCrypt;

的错误(但编译并执行正常)相同

那是怎么回事?

编辑:

我知道我可以将其用作BCrypt.Net.BCrypt.HashPassword("234");,但我想避免使用它。

2 个答案:

答案 0 :(得分:1)

我认为您可以解决此问题,为命名空间添加别名。像这样:

using BCr = BCrypt.Net;

namespace Program {

   public class MyClass {

     public void MyMethod() {
        var s = BCr.BCrypt.HashPassword("234");
     }
  }
}

答案 1 :(得分:0)

添加

using BCrypt = BCrypt.Net.BCrypt;

给你的使用:

namespace YourNamespace
{
    using BCrypt = BCrypt.Net.BCrypt;

    class Program
    {
        static void Main(string[] args)
        {
            BCrypt.HashPassword("234");
        }
    }

校对屏幕:

VS 2015 likes this