簡體   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