C#代码通过命名空间重用

时间:2009-09-30 10:21:01

标签: c# namespaces

我喜欢创建一个充满自定义函数的文件,我可以在其他项目中使用它。现在我还没有完全理解如何解决这个问题,通常用像php这样的语言,你只需要创建php文件然后去包含(“cust_lib.php”)或者调用任何文件。

现在我认为这个过程涉及到库有自己的命名空间,然后使用custom_lib;或者脚本中的custom_lib ::(我不想讨论哪个是最好的方法)。

这是对的吗?或者我应该创建库并将其转换为.dll,如果是这样,我该怎么做呢,dll里面有什么样的语法等。

然而,如果它只是在一个项目中的文件,那么我不需要沿着那条路走下去吗?我可以创建命名空间并使用它吗?

这就是我目前正在努力的事情,并认为它会是这样的

namespace Custom_Lib{
  ~~functions to go here~~
}

然而功能必须存在于一个类内吗?所以这就像

namespace Custom_Lib{
  class custom_lib{

    public string function1(string input){
      return input;
    }

  }
}

所以一些帮助,指针,例子将受到赞赏,所以我可以围绕这个

谢谢, PSY。

(是的,我把它们称为函数,它们来自长篇php / js等背景)

3 个答案:

答案 0 :(得分:6)

通常的方法是创建一个类库项目,将您的类和方法放在该项目中,确保您要公开的那些是public。然后在客户端项目中添加对生成的dll文件的引用,您将可以使用类库中的功能。

即使你决定将它全部放在一个文件中,我仍然建议你把它变成一个类库,因为我想这会使它更容易维护。例如,请考虑以下方案:

  • 您决定将其放在一个文件中,并在要使用它的所有项目中包含该文件的副本。稍后您会在代码中发现错误。现在,您将拥有该文件的许多副本,以便更正错误。
  • 您决定将其放在一个文件中,并在所有项目中包含相同的文件。现在,如果您想要更改其中的某些行为,您将改变使用它的所有项目的行为。

在这两种情况下,将它作为一个单独的项目保存将为您提供便利:

  • 您只需要维护一份代码
  • 您可以决定在更新类库时是否更新某个项目使用的dll。

关于语法问题:是的,所有方法都必须存在于类中。但是,如果类只是方法的容器,则可以创建它(以及方法static):

public static class CustomLib
{
    public static string GetSomethingInteresting(int input)
    {
         // your code here...
    }
}

这样您就不需要创建CustomLib的实例,但只需调用该方法:

string meaningOfLife = CustomLib.GetSomethingInteresting(42);

答案 1 :(得分:1)

除了弗雷德里克·莫尔克(FredrikMörk)精心编写和现场反应之外,我还要补充一下:

  • 避免创建一个类,它是函数/方法的kitchen-sink集合。

相反,将相关方法分组到较小的类中,以便您和库的使用者更容易找到他们想要的功能。此外,如果您的库使用类级变量,则可以限制其范围。

此外,如果您稍后决定向库中添加线程功能,或者您的库在多线程应用程序中使用,静态方法可能会成为您的噩梦。这是一个严重的问题,不应该被忽视。

答案 2 :(得分:0)

这里没有问题。你自己回答了。是的,您必须构造一个包含所有辅助方法的类。是的,如果要在多个项目中重用它,或者只是将源文件添加到项目中,您可以将其编译为dll。

通常我将helper类和所有函数声明为static,以避免每次使用它时启动类。