对参考和命名空间感到困惑

时间:2012-07-30 15:26:17

标签: c#

我已经创建了一个新的类库(DLL),当我试图从另一个程序集或库中的DLL创建一个类的对象时,它不起作用,我想必须有关于命名空间或参考问题,也许两者都有不同的命名空间。

我应该是其他库命名空间,比如在其他库类的开头使用命名空间,以便能够在DLL中创建此类的对象吗?

我测试了右键单击其他库的on并选择Add this reference to this new DLL,但这不起作用。一些帮助是预先确定的。

5 个答案:

答案 0 :(得分:1)

  

我应该是其他库命名空间,比如在其他库类的开头使用命名空间,以便能够在DLL中创建此类的对象吗?

是的,前提是您添加了对该程序集(DLL)的引用,并且库中的类型是 public

  

我测试了右键单击其他库的on并选择Add this reference to this new DLL,但这不起作用。一些帮助是预先确定的。

为了使用库中定义的类型,这是绝对必需的。该引用允许编译器查找和使用类型。

答案 1 :(得分:1)

您需要将其添加到引用中,然后按如下方式访问它:

 using MyLibrary

这应该是你所需要的一切。

然后您将按如下方式访问这些方法:

 var result = new MyLibrary.MyMethod()

答案 2 :(得分:1)

其他答案不正确,说您必须使用using。您根本不需要 来使用using语句。另一方面,参考文献是必需的。

例如,假设您已创建一个名为TwentyNine.dll的程序集,包括此类型声明:

namespace Kreativ.Application.One
{
    public class SomeClass
    {
        public static int GetSomeResult()
        {
            return 863;
        }
    }
 }

现在,您正在创建一个新应用程序,并且您想要调用GetSomeResult()。 您必须在新项目中添加对TwentyNine.dll的引用。

最常见的是,您可以通过这种方式调用方法:

using Kreativ.Application.One;
using System;

namespace Kreativ.Application.Two
{
    public class MainClass
    {
        public static void Main()
        {
            int i = SomeClass.GetSomeResult();
            Console.WriteLine(i);
        }
    }
}

但您可以在不使用using的情况下执行此操作:

namespace Kreativ.Application.Two
{
    public class MainClass
    {
        public static void Main()
        {
            int i = Kreativ.Application.One.SomeClass.GetSomeResult();
            System.Console.WriteLine(i);
        }
    }
}

答案 3 :(得分:0)

您必须首先添加引用,然后在您使用它的任何文件中,您需要在文件顶部添加using指令。

答案 4 :(得分:0)

  • 首先你需要添加一个对图书馆的引用(我说你做的谎言)

但这还不够

  • 您需要对您使用的类型的命名空间进行decalre(您的库中可能有多个namepsace)或文件顶部

    使用MyLibraryNameSpace;

或在代码行中,如

MyLibraryNameSpace.MyLibType t = new MyLibraryNameSpace.MyLibType();