.NET 幫助

C# 內部結構(開發人員如何運作)

發佈 2024年2月18日
分享:

介紹

在靜態 void main 程式中管理表單類別、方法和屬性的可見性時,存取修飾符在 C# 元件基礎開發程式語言中至關重要。在構建圖形使用者介面模組化和可維護的應用程式時,其中一個非常相關的存取修飾符是 internal。C# 的理念 內部 本文將討論此內容,以及IronPDF的幾個有用應用,一個靈活的C#框架用於管理PDF文件。

如何在基於元件的 C# 開發中使用內部成員

  1. 建立一個 C# 專案。

  2. 了解內部存取修飾符。

  3. 將 'internal' 應用於成員。

  4. 在組件層級組織代碼。

  5. 在相同組件內使用內部成員。

  6. 編譯代碼。

了解 Internal 存取子

在 C# 中,internal 關鍵字/存取子限制了一個類型或成員的可見性至相同程序集內的其他成員。這意味著,任何標記為 internal 的類,不論是派生類、方法還是屬性,都可以被相同程序集內的其他類型訪問,但無法被程序集外的類型訪問。這種訪問控制的程度對於封裝而言是必要的,因為它允許你指定僅供相同程序集內專屬使用的實作細節。

在 C# 中,你可以以下方式使用 internal 存取子:

Internal 類別

宣告一個僅在相同組件內可用的類別,使用 internal 關鍵字。

// Assembly1
internal class InternalClass
{
    // Members of InternalClass
}
// Assembly1
internal class InternalClass
{
    // Members of InternalClass
}
' Assembly1
Friend Class InternalClass
	' Members of InternalClass
End Class
VB   C#

Internal Class Members

將類成員(如字段、屬性和方法)的可見性限制為相同程序集,通過應用 internal。

// Assembly1
internal class MyClass
{
    internal static int InternalField;
    internal void InternalMethod() { }
}
// Assembly1
internal class MyClass
{
    internal static int InternalField;
    internal void InternalMethod() { }
}
' Assembly1
Friend Class [MyClass]
	Friend Shared InternalField As Integer
	Friend Sub InternalMethod()
	End Sub
End Class
VB   C#

內部介面

使用 internal 訪問修飾符宣告一個只能在相同組件內訪問的介面。

// Assembly1
internal interface IInternalInterface
{
    // Interface members
}
// Assembly1
internal interface IInternalInterface
{
    // Interface members
}
' Assembly1
Friend Interface IInternalInterface
	' Interface members
End Interface
VB   C#

內部嵌套類別

使用 internal 宣告嵌套類別,該類別只能在相同的組件中存取。

// Assembly1
public class OuterClass
{
    internal class InternalNestedClass
    {
        // Members of InternalNestedClass
    }
}
// Assembly1
public class OuterClass
{
    internal class InternalNestedClass
    {
        // Members of InternalNestedClass
    }
}
' Assembly1
Public Class OuterClass
	Friend Class InternalNestedClass
		' Members of InternalNestedClass
	End Class
End Class
VB   C#

內部組件

通過在組件級別應用 internal 來限制外部組件對整個組件的訪問。

[assembly: InternalsVisibleTo("ExternalAssembly")]
[assembly: InternalsVisibleTo("ExternalAssembly")]
<Assembly: InternalsVisibleTo("ExternalAssembly")>
VB   C#

在開發和測試期間,可以使用 InternalsVisibleTo 屬性使內部的存取修飾符對指定的外部組件可見。

public class MyClassA
{
    internal void MyInternalMethod()
    {
        // Implementation details only accessible within Assembly A
    }
}
// Assembly B
public class MyClassB
{
    void SomeMethod()
    {
        MyClassA myObject = new MyClassA();
        myObject.MyInternalMethod(); // This will result in a compilation error
    }
}
public class MyClassA
{
    internal void MyInternalMethod()
    {
        // Implementation details only accessible within Assembly A
    }
}
// Assembly B
public class MyClassB
{
    void SomeMethod()
    {
        MyClassA myObject = new MyClassA();
        myObject.MyInternalMethod(); // This will result in a compilation error
    }
}
Public Class MyClassA
	Friend Sub MyInternalMethod()
		' Implementation details only accessible within Assembly A
	End Sub
End Class
' Assembly B
Public Class MyClassB
	Private Sub SomeMethod()
		Dim myObject As New MyClassA()
		myObject.MyInternalMethod() ' This will result in a compilation error
	End Sub
End Class
VB   C#

由於在此範例中,MyInternalMethod 被指定為內部成員,因此它只能在組件 A 中存取。如果您嘗試從組件 B 存取此函數,將會發生編譯錯誤。

將受保護和內部存取修飾符組合在一起會產生受保護的內部存取修飾符。成員 (方法、屬性或欄位) 或一種類型 (類別、介面或委派) 由於有受保護的內部複合存取修飾詞,衍生類型可以在其程序集內部和外部進行訪問。受保護的內部存取級別提供受保護和內部存取級別所單獨提供的可見性之間的平衡。

IronPDF

使用 C# 程式語言, IronPDF 是一個.NET程式庫,讓開發人員能夠生成、編輯和修改PDF文件。它提供了一系列工具和功能,以多種方式與PDF文件互動,包括從HTML創建PDF、將HTML轉換為PDF、合併或分割PDF文件,以及向已有的PDF添加註釋、文字和照片。

安裝 IronPDF

獲取 IronPDF 庫;未來的補丁需要用到它。在套件管理器中輸入以下代碼以完成此操作:

Install-Package IronPdf

C#內部(對開發者而言的運作方式):圖1 - 安裝IronPDF

使用 NuGet 套件管理器搜尋套件 "IronPDF" 是另一個選擇。 我們可以從這個與 IronPDF 相關的所有 NuGet 套件列表中選擇並下載所需的套件。

C#內部運作方式(適用於開發人員):圖2 - IronPDF套件

IronPDF的功能

  • 轉換HTML為PDF:使用IronPDF,您可以從任何類型的HTML資訊(包括檔案、URL和HTML代碼字串)生成PDF文件。
  • PDF生成:使用C#編程語言,您可以程式化地向PDF文件添加文本、圖形及其他元素。
  • PDF操作:IronPDF提供了將PDF檔案分割成多個檔案、將多個PDF文件合併成單一檔案以及修改現有PDF的功能。
  • PDF表單:這個庫在需要收集和處理表單數據的情況下非常實用,因為它允許用戶創建和填寫PDF表單。
  • 安全功能:使用IronPDF,可以設定密碼和權限保護並加密PDF文件。
  • 文本提取:IronPDF可以用來從PDF檔案中提取文本。

使用 IronPDF 封裝 PDF 處理

IronPDF 提供了一系列廣泛的功能,用於生成、修改和處理 PDF 文檔。透過將 PDF 處理代碼封裝在內部類或方法中,可以將實現細節隱藏在程序集邊界後。若要了解更多關於 IronPDF 的資訊,請參考 這裡請檢視以下情況:

// Assembly A (PDFHandlingLibrary)
internal class PdfProcessor
{
    internal void AddWatermark(IronPdf.PdfDocument pdfDocument, string watermarkText)
    {
        // Implementation details for adding a watermark using IronPDF
    }
    internal IronPdf.PdfDocument MergePdfDocuments(IEnumerable<IronPdf.PdfDocument> pdfDocuments)
    {
        // Implementation details for merging PDF documents using IronPDF
        return mergedPdfDocument;
    }
}
// Assembly B (MainApplication)
public class MainClass
{
    void ProcessPdfDocuments()
    {
    var Renderer = new IronPdf.HtmlToPdf();
        var pdfProcessor = Renderer.RenderHtmlAsPdf("<h1>Hello, IronPDF</h1>");;
        // Accessing internal methods within the same assembly is allowed
        pdfProcessor.ApplyWatermark("<h4>Confidential</h4>")
        IronPdf.PdfDocument mergedPdf = pdfProcessor.MergePdfDocuments(pdfDocumentList);
    }
}
// Assembly A (PDFHandlingLibrary)
internal class PdfProcessor
{
    internal void AddWatermark(IronPdf.PdfDocument pdfDocument, string watermarkText)
    {
        // Implementation details for adding a watermark using IronPDF
    }
    internal IronPdf.PdfDocument MergePdfDocuments(IEnumerable<IronPdf.PdfDocument> pdfDocuments)
    {
        // Implementation details for merging PDF documents using IronPDF
        return mergedPdfDocument;
    }
}
// Assembly B (MainApplication)
public class MainClass
{
    void ProcessPdfDocuments()
    {
    var Renderer = new IronPdf.HtmlToPdf();
        var pdfProcessor = Renderer.RenderHtmlAsPdf("<h1>Hello, IronPDF</h1>");;
        // Accessing internal methods within the same assembly is allowed
        pdfProcessor.ApplyWatermark("<h4>Confidential</h4>")
        IronPdf.PdfDocument mergedPdf = pdfProcessor.MergePdfDocuments(pdfDocumentList);
    }
}
' Assembly A (PDFHandlingLibrary)
Friend Class PdfProcessor
	Friend Sub AddWatermark(ByVal pdfDocument As IronPdf.PdfDocument, ByVal watermarkText As String)
		' Implementation details for adding a watermark using IronPDF
	End Sub
	Friend Function MergePdfDocuments(ByVal pdfDocuments As IEnumerable(Of IronPdf.PdfDocument)) As IronPdf.PdfDocument
		' Implementation details for merging PDF documents using IronPDF
		Return mergedPdfDocument
	End Function
End Class
' Assembly B (MainApplication)
Public Class MainClass
	Private Sub ProcessPdfDocuments()
	Dim Renderer = New IronPdf.HtmlToPdf()
		Dim pdfProcessor = Renderer.RenderHtmlAsPdf("<h1>Hello, IronPDF</h1>")
		' Accessing internal methods within the same assembly is allowed
		pdfProcessor.ApplyWatermark("<h4>Confidential</h4>") IronPdf.PdfDocument mergedPdf = pdfProcessor.MergePdfDocuments(pdfDocumentList)
	End Sub
End Class
VB   C#

在此範例中,Assembly A 的 PdfProcessor 類別使用 IronPDF 來封裝 PDF 處理程式碼。由於方法被指定為內部,因此僅有相同程序集的內部成員可以訪問它們。Assembly B 的 MainClass 可以輕鬆地使用這些內部功能。想了解更多關於 IronPDF 的程式碼,請參考 這裡.

C#內部(對開發人員的運作方式):圖3 - 輸出

結論

最後,C# 的 internal 修飾符提供了對組件內哪些類型和成員可見的強控制。當與 IronPDF 結合使用時,它有助於創建安全、模塊化和可維護的應用程序。通過將與 IronPDF 相關的代碼封裝在 internal 類或方法內,您可以在抽象、安全性和可用性之間達成妥協。當處理像 IronPDF 這樣管理 PDF 文檔處理等基本功能的庫時,尤其重要的是要採用封裝和有限訪問的概念,以促進 C# 應用程序中穩定且可擴展的架構。

IronPDF 的 $749 輕便組合包包括非常強大的許可證、重新設計選項和更長時間的程序設計支持。在帶水印的測試期間,客戶可以在真實應用環境中測試該產品。點擊 連結 了解更多有關IronPDF的好處、審批過程和草稿表單的信息。請查看這个 網站 了解有關 Iron Software 的更多資訊。

< 上一頁
C# 模式匹配表达式 (开发人员使用方法)
下一個 >
C# LINQ Distinct(開發人員如何使用)

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >