繁体   English   中英

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

[英]C# code re-use via namespaces

我喜欢创建一个充满自定义功能的文件,该文件可以在其他项目中使用。 现在,我还不完全了解如何执行此操作,通常使用php之类的语言,您只是创建php文件,然后转到include(“ cust_lib.php”)或任何称为该文件的文件。

现在,我认为该过程涉及该库具有其自己的名称空间,然后要么使用custom_lib,要么使用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等背景)

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

即使您决定将所有内容放到一个文件中,我仍然建议您将其设置为类库,因为我认为这样做会使维护变得更容易。 例如,考虑以下情形:

  • 您决定将其放入文件中,并在要使用该文件的所有项目中包括该文件的副本。 稍后,您会在代码中找到一个错误。 现在,您将拥有多个文件副本,可在其中纠正错误。
  • 您决定将其放入文件中,并将该文件包含在所有项目中。 现在,如果要更改其中的某些行为,则将更改所有使用它的项目的行为。

在这两种情况下,将其保存为单独的项目将为您带来便利:

  • 您将只保留一份代码副本
  • 当您对类库进行更新时,可以决定是否更新某个项目使用的dll。

关于语法问题:是的,所有方法都必须存在于一个类中。 但是,如果类仅是方法的容器,则可以使其(和方法为static ):

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

这样,您将无需创建CustomLib的实例,而只需调用该方法:

string meaningOfLife = CustomLib.GetSomethingInteresting(42);

除了FredrikMörk的书面答复和即时答复外,我还要添加以下内容:

  • 避免创建一个单一的类,该类是函数/方法的一个厨房接收器集合。

而是将相关方法分组为较小的类,以便您和库的使用者可以更轻松地找到所需的功能。 另外,如果您的库使用类级变量,则可以限制其范围。

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

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

通常,我将帮助程序类和所有函数声明为静态的,以避免每次使用该类时都将其初始化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM