Przejdź do treści stopki
POMOC .NET

C# Internal (jak to działa dla programistów)

Podczas zarządzania widocznością klas formularzy, metod i właściwości w programie static void main, modyfikatory dostępu są niezbędne w języku programowania C# opartym na komponentach. Podczas tworzenia modułowych i łatwych w utrzymaniu graficznych interfejsów użytkownika jednym z istotnych modyfikatorów dostępu jest internal. W niniejszym artykule omówiona zostanie koncepcja C# internal, a także kilka przydatnych zastosowań IronPDF, elastycznego frameworka C# do zarządzania dokumentami PDF.

Jak korzystać z elementów wewnętrznych w programowaniu opartym na komponentach w języku C

  1. Utwórz projekt w języku C#.
  2. Zrozumienie wewnętrznego modyfikatora dostępu.
  3. Zastosuj "internal" do elementów.
  4. Organizuj kod na poziomie asemblera.
  5. Używaj elementów wewnętrznych w ramach tego samego zestawu.
  6. Skompiluj kod.

Zrozumienie wewnętrznego modyfikatora dostępu

Wewnętrzne słowo kluczowe/modyfikator dostępu w języku C# ogranicza widoczność typu lub elementu składowego do innych elementów składowych w tym samym zestawie. Oznacza to, że każda klasa, niezależnie od tego, czy jest to klasa pochodna, metoda czy właściwość oznaczona jako wewnętrzna, jest dostępna dla innych typów w ramach tego samego zestawu, ale niedostępna dla typów spoza zestawu. Ten poziom kontroli dostępu jest niezbędny dla enkapsulacji, ponieważ pozwala określić szczegóły implementacji, które powinny być używane wyłącznie wewnątrz tego samego modułu w sposób prywatny.

W języku C# można używać modyfikatora internal w następujący sposób:

Klasa wewnętrzna

Deklarowanie klasy, która jest dostępna tylko w ramach tego samego zestawu, za pomocą internal.

// Assembly1
internal class InternalClass
{
    // Members of InternalClass
}
// Assembly1
internal class InternalClass
{
    // Members of InternalClass
}
' Assembly1
Friend Class InternalClass
	' Members of InternalClass
End Class
$vbLabelText   $csharpLabel

Wewnętrzne elementy klasy

Ograniczenie widoczności elementów klasy, takich jak pola, właściwości i metody, do tego samego zestawu poprzez zastosowanie atrybutu 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
$vbLabelText   $csharpLabel

Interfejs wewnętrzny

Deklarowanie interfejsu, do którego dostęp jest możliwy wyłącznie w ramach tego samego modułu, przy użyciu modyfikatora dostępu internal.

// Assembly1
internal interface IInternalInterface
{
    // Interface members
}
// Assembly1
internal interface IInternalInterface
{
    // Interface members
}
' Assembly1
Friend Interface IInternalInterface
	' Interface members
End Interface
$vbLabelText   $csharpLabel

Wewnętrzna klasa zagnieżdżona

Deklarowanie klasy zagnieżdżonej, do której dostęp jest możliwy tylko w obrębie tego samego zestawu za pomocą 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
$vbLabelText   $csharpLabel

Zespół wewnętrzny

Ograniczanie dostępu do całego zestawu z zewnętrznych zestawów poprzez zastosowanie atrybutu internal na poziomie zestawu.

using System.Runtime.CompilerServices;

// Allowing "ExternalAssembly" to access internal members of this assembly
[assembly: InternalsVisibleTo("ExternalAssembly")]
using System.Runtime.CompilerServices;

// Allowing "ExternalAssembly" to access internal members of this assembly
[assembly: InternalsVisibleTo("ExternalAssembly")]
Imports System.Runtime.CompilerServices

' Allowing "ExternalAssembly" to access internal members of this assembly
<Assembly: InternalsVisibleTo("ExternalAssembly")>
$vbLabelText   $csharpLabel

Podczas tworzenia i testowania modyfikatory dostępu wewnętrznego można udostępnić wyznaczonemu zestawowi zewnętrznemu za pomocą atrybutu InternalsVisibleTo.

// Assembly A
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
    }
}
// Assembly A
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
    }
}
' Assembly A
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
$vbLabelText   $csharpLabel

Ponieważ MyInternalMethod jest w tym przykładzie wyznaczony jako element wewnętrzny, dostęp do niego jest możliwy wyłącznie w obrębie zestawu A. Jeśli spróbujesz uzyskać dostęp do tej funkcji z zestawu B, wystąpi błąd kompilacji.

Połączenie modyfikatorów dostępu protected i internal daje modyfikator dostępu protected internal. Dostęp do elementu (metody, właściwości lub pola) lub typu (klasy, interfejsu lub delegata) jest możliwy zarówno wewnątrz, jak i na zewnątrz jego zestawu przez typy pochodne dzięki chronionemu wewnętrznym złożonemu modyfikatorowi dostępu. Równowagę między widocznością zapewnianą oddzielnie przez poziomy dostępu chronionego i wewnętrznego zapewnia poziom dostępu chronionego wewnętrznego.

IronPDF

Wykorzystując język programowania C#, IronPDF Official Site jest biblioteką .NET, która umożliwia programistom generowanie, edycję i modyfikację dokumentów PDF. Oferuje szereg narzędzi i funkcji umożliwiających interakcję z plikami PDF na wiele sposobów, w tym tworzenie plików PDF z HTML, konwersję HTML do PDF, łączenie lub dzielenie dokumentów PDF oraz dodawanie adnotacji, tekstu i zdjęć do już istniejących plików PDF.

Zainstaluj IronPDF

Pobierz bibliotekę IronPDF; Jest to potrzebne do przyszłej aktualizacji. Aby to zrobić, wpisz następujące polecenie w konsoli menedżera pakietów:

Install-Package IronPdf

C# Internal (Jak to działa dla programistów): Rysunek 1 — Instalacja IronPDF

Dodatkową opcją jest użycie menedżera pakietów NuGet do wyszukania pakietu "IronPDF". Możemy wybrać i pobrać niezbędny pakiet z tej listy wszystkich pakietów NuGet powiązanych z IronPDF.

C# Internal (Jak to działa dla programistów): Rysunek 2 — Pakiet IronPDF

IronPDF wyróżnia się w konwersji HTML do PDF, zapewniając precyzyjne zachowanie oryginalnych układów i stylów. Idealnie nadaje się do tworzenia plików PDF z treści internetowych, takich jak raporty, faktury i dokumentacja. Dzięki obsłudze plików HTML, adresów URL i surowych ciągów znaków HTML, IronPDF z łatwością tworzy wysokiej jakości dokumenty PDF.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Funkcje IronPDF

  • Konwersja HTML do PDF: Dzięki IronPDF możesz tworzyć dokumenty PDF z dowolnego rodzaju informacji HTML, w tym plików, adresów URL i ciągów kodu HTML.
  • Generowanie plików PDF: Korzystając z języka programowania C#, można programowo dodawać tekst, grafikę i inne elementy do dokumentów PDF.
  • Manipulacja plikami PDF: IronPDF oferuje funkcje podziału pliku PDF na wiele plików, łączenia wielu dokumentów PDF w jeden plik oraz modyfikacji już istniejących plików PDF.
  • Formularze PDF: Biblioteka jest pomocna w sytuacjach, w których konieczne jest gromadzenie i przetwarzanie danych z formularzy, ponieważ umożliwia użytkownikom tworzenie i wypełnianie formularzy PDF.
  • Funkcje bezpieczeństwa: Dokumenty PDF mogą być chronione hasłem i uprawnieniami oraz szyfrowane przy użyciu IronPDF.
  • Wyodrębnianie tekstu: IronPDF może służyć do wyodrębniania tekstu z plików PDF.

Enkapsulacja obsługi plików PDF za pomocą IronPDF

IronPDF oferuje szeroki zakres funkcji do generowania, modyfikowania i przetwarzania dokumentów PDF. Szczegóły implementacji można ukryć za granicami zestawów, umieszczając kod przetwarzania plików PDF w klasach lub metodach wewnętrznych. Aby dowiedzieć się więcej o IronPDF, zapoznaj się z dokumentacją IronPDF.

Rozważmy następującą sytuację:

// 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
        IronPdf.PdfDocument mergedPdfDocument = new IronPdf.PdfDocument();
        // Logic to merge documents
        return mergedPdfDocument;
    }
}

// Assembly B (MainApplication)
public class MainClass
{
    void ProcessPdfDocuments()
    {
        // Create an instance of the PdfProcessor within the same assembly
        PdfProcessor pdfProcessor = new PdfProcessor();

        // Assuming pdfDocumentList is defined
        IEnumerable<IronPdf.PdfDocument> pdfDocumentList = new List<IronPdf.PdfDocument>();

        // Accessing internal methods within the same assembly is allowed
        pdfProcessor.AddWatermark(new IronPdf.PdfDocument(), "Confidential");
        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
        IronPdf.PdfDocument mergedPdfDocument = new IronPdf.PdfDocument();
        // Logic to merge documents
        return mergedPdfDocument;
    }
}

// Assembly B (MainApplication)
public class MainClass
{
    void ProcessPdfDocuments()
    {
        // Create an instance of the PdfProcessor within the same assembly
        PdfProcessor pdfProcessor = new PdfProcessor();

        // Assuming pdfDocumentList is defined
        IEnumerable<IronPdf.PdfDocument> pdfDocumentList = new List<IronPdf.PdfDocument>();

        // Accessing internal methods within the same assembly is allowed
        pdfProcessor.AddWatermark(new IronPdf.PdfDocument(), "Confidential");
        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
		Dim mergedPdfDocument As New IronPdf.PdfDocument()
		' Logic to merge documents
		Return mergedPdfDocument
	End Function
End Class

' Assembly B (MainApplication)
Public Class MainClass
	Private Sub ProcessPdfDocuments()
		' Create an instance of the PdfProcessor within the same assembly
		Dim pdfProcessor As New PdfProcessor()

		' Assuming pdfDocumentList is defined
		Dim pdfDocumentList As IEnumerable(Of IronPdf.PdfDocument) = New List(Of IronPdf.PdfDocument)()

		' Accessing internal methods within the same assembly is allowed
		pdfProcessor.AddWatermark(New IronPdf.PdfDocument(), "Confidential")
		Dim mergedPdf As IronPdf.PdfDocument = pdfProcessor.MergePdfDocuments(pdfDocumentList)
	End Sub
End Class
$vbLabelText   $csharpLabel

W tym przykładzie klasa PdfProcessor w zestawie A wykorzystuje IronPDF do enkapsulacji kodu przetwarzania plików PDF. Ponieważ metody są oznaczone jako wewnętrzne, dostęp do nich mają wyłącznie inne elementy wewnętrzne tego samego zestawu. Zespół B MainClass może z łatwością korzystać z tych funkcji wewnętrznych. Aby dowiedzieć się więcej o kodzie IronPDF, zapoznaj się z przykładem konwersji HTML do PDF w IronPDF.

C# Internal (Jak to działa dla programistów): Rysunek 3 – Wynik

Wnioski

Wreszcie, modyfikator internal w języku C# zapewnia ścisłą kontrolę nad tym, które typy i elementy są widoczne wewnątrz zestawu. W połączeniu z IronPDF pomaga tworzyć bezpieczne, modułowe i łatwe w utrzymaniu aplikacje. Można osiągnąć kompromis między abstrakcyjnością, bezpieczeństwem i użytecznością, umieszczając kod związany z IronPDF wewnątrz klas lub metod wewnętrznych. Podczas pracy z bibliotekami takimi jak IronPDF, które zarządzają podstawowymi funkcjami, takimi jak przetwarzanie dokumentów PDF, szczególnie ważne jest stosowanie koncepcji enkapsulacji i ograniczonego dostępu w celu zapewnienia stabilnej i skalowalnej architektury w aplikacjach C#.

Bardzo solidna licencja, opcje przeprojektowania oraz dłuższy okres wsparcia programistycznego są zawarte w pakiecie IronPDF $799 light. Klienci mogą przetestować produkt w rzeczywistych warunkach aplikacji podczas okresu testowego z znakiem wodnym. Dowiedz się więcej o licencjonowaniu IronPDF, aby poznać korzyści, proces zatwierdzania i formularz wniosku. Więcej informacji można znaleźć na stronie internetowej Iron Software.

Często Zadawane Pytania

W jaki sposób słowo kluczowe internal w języku C# poprawia hermetyzację?

Słowo kluczowe internal w języku C# zwiększa hermetyzację poprzez ograniczenie widoczności typów lub elementów do tego samego modułu, uniemożliwiając w ten sposób zewnętrznym modułom dostęp do szczegółów implementacji wewnętrznej. Sprzyja to czystszej architekturze i łatwości utrzymania kodu.

Jaka jest rola atrybutu InternalsVisibleTo w języku C#?

Atrybut InternalsVisibleTo w języku C# pozwala przyznać dostęp do wewnętrznych elementów składowych zestawu określonemu zestawowi zewnętrznemu. Jest to szczególnie przydatne podczas testowania, ponieważ umożliwia zestawom testowym dostęp do wewnętrznych elementów składowych w celu walidacji, zachowując jednocześnie hermetyzację podczas wdrażania.

Czy modyfikator dostępu internal może być używany do przetwarzania plików PDF w języku C#?

Tak, modyfikator dostępu internal może być używany w połączeniu z bibliotekami takimi jak IronPDF w celu enkapsulacji logiki przetwarzania plików PDF w ramach zestawu. Zapewnia to, że wrażliwe funkcje manipulacji plikami PDF nie są ujawniane na zewnątrz, co zwiększa bezpieczeństwo i ułatwia konserwację.

Jakie są typowe zastosowania słowa kluczowego internal w języku C#?

Typowe zastosowania słowa kluczowego internal w języku C# obejmują ograniczanie dostępu do wewnętrznych klas, metod i właściwości, szczególnie podczas tworzenia komponentów modułowych, takich jak graficzne interfejsy użytkownika, lub podczas enkapsulacji logiki biznesowej w bibliotekach takich jak IronPDF do zarządzania dokumentami PDF.

Jak przekonwertować HTML na PDF za pomocą języka C#?

Możesz konwertować HTML na PDF za pomocą języka C#, korzystając z biblioteki IronPDF. Biblioteka oferuje metody takie jak RenderHtmlAsPdf do konwersji ciągów HTML na dokumenty PDF, a także RenderHtmlFileAsPdf do bezpośredniej konwersji plików HTML.

Jakie korzyści dla tworzenia bibliotek oferuje użycie wewnętrznego modyfikatora dostępu?

Wykorzystanie modyfikatora dostępu wewnętrznego w tworzeniu bibliotek oferuje korzyści, takie jak zwiększone bezpieczeństwo poprzez ukrycie wrażliwych szczegółów implementacji przed zewnętrznymi zestawami oraz lepszą łatwość konserwacji poprzez hermetyzację złożonej logiki w bibliotece i udostępnienie tylko niezbędnych interfejsów.

W jaki sposób można wykorzystać IronPDF do zapewnienia bezpieczeństwa dokumentów podczas przetwarzania plików PDF?

IronPDF może być wykorzystywany do zapewnienia bezpieczeństwa dokumentów podczas przetwarzania plików PDF poprzez zastosowanie takich funkcji, jak ochrona hasłem, szyfrowanie i kontrola dostępu, gwarantując, że tylko upoważnieni użytkownicy mogą przeglądać lub modyfikować dokumenty PDF generowane lub przetwarzane w bezpiecznym środowisku.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczą...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie