.NET ヘルプ

C# 内部 (開発者向けの仕組み)

公開済み 2024年2月18日
共有:

イントロダクション

フォームクラス、メソッド、およびプロパティの可視性を静的voidメインプログラム内で管理する際には、アクセス修飾子がC#コンポーネントベースの開発プログラム言語において重要です。 モジュール化され、メンテナンス可能なグラフィカル・ユーザー・インターフェースを構築する場合、このようなアクセス修飾子の1つに、internalがあります。 C# のアイデア内部この記事では、柔軟なC#フレームワークであるIronPDFの便利な用途について話し合います。

C#コンポーネントベース開発における内部メンバーの使い方

  1. C#プロジェクトを作成する。

  2. 内部アクセス修飾子を理解する。

  3. メンバーに「internal」を適用する。

  4. コードをアセンブリレベルで整理します。

  5. 同じアセンブリ内で内部メンバーを使用します。

  6. コードをコンパイルします。

内部アクセス修飾子の理解

C#の内部キーワード/アクセス修飾子は、型やメンバーの可視性を同じアセンブリ内の他のメンバーに制限します。 これは、派生クラスであろうと、メソッドであろうと、internalとタグ付けされたプロパティであろうと、どのようなクラスであっても、同じアセンブリ内の他の型からはアクセスできるが、アセンブリ外の型からは利用できないことを意味します。 この程度のアクセス制御はカプセル化にとって不可欠です。なぜなら、同じアセンブリ内でプライベートに使用されるべき実装の詳細を指定できるからです。

C#では、次の方法で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を適用して、フィールド、プロパティ、メソッドなどのクラスメンバーの可視性を同じアセンブリ内に制限する。

// 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#

内部インターフェース

内部アクセス修飾子を使用して同じアセンブリ内でのみアクセスできるインターフェイスを宣言します。

// 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 が internal メンバーとして指定されているため、アセンブリ A 内でのみアクセスできます。 アセンブリBからこの関数にアクセスしようとすると、コンパイルエラーが発生します。

protected と internal アクセス修飾子を組み合わせると、protected internal アクセス修飾子が生成されます。 メンバー(メソッド、プロパティ、またはフィールド)または型(クラス、インターフェイス、またはデリゲート)派生型がアセンブリの内外の両方でアクセスできるのは、protected internal 複合アクセス修飾子のおかげです。 保護内アクセス レベルによって、保護および内部アクセス レベルが個別に提供する可視性のバランスが提供されます。

IronPDF

C# プログラミング言語を使用してIronPDF 公式サイトは、開発者がPDFドキュメントを生成、編集、変更できるようにする.NETライブラリです。 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を使用すると、ファイル、URL、およびHTMLコードの文字列を含むあらゆるタイプのHTML情報からPDF文書を作成できます。
  • PDF生成: C#プログラミング言語を使用して、PDFドキュメントにテキスト、グラフィック、その他の要素をプログラムで追加することができます。
  • PDF操作: IronPDFは、PDFファイルを複数のファイルに分割したり、複数のPDFドキュメントを1つのファイルに結合したり、既存のPDFを修正する機能を提供します。
  • PDFフォーム: ライブラリは、フォームデータを収集して処理する必要がある状況で役立ちます。ユーザーがPDFフォームを作成し、完了させることができるためです。
  • セキュリティ機能: PDF ドキュメントは、IronPDF を使用してパスワードおよび権限保護され、暗号化される可能性があります。
  • テキスト抽出: IronPDFはPDFファイルからテキストを抽出するために使用できます。

IronPDFを使用したPDF処理のカプセル化

IronPDFは、PDFドキュメントの生成、修正、および処理のための広範な機能を提供します。 実装の詳細は、PDF処理コードを内部クラスやメソッド内に囲むことで、アセンブリの境界の背後に隠すことができます。 IronPDFの詳細については、以下をご参照ください。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);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

この例では、アセンブリAのPdfProcessorクラスがIronPDFを使用してPDF処理コードをカプセル化しています。 メソッドが内部として指定されているため、同じアセンブリの内部メンバーのみがそれらにアクセスできます。 アセンブリBのMainClassは簡単にこれらの内部関数を利用できます。 IronPDFコードについてもっと知りたい方はIronPDF HTMLからPDFへの翻訳例.

C#内部(開発者向けの仕組み):図3 - 出力

結論

最後に、C# の internal 修飾子は、アセンブリ内でどの型とメンバーが見えるかについての強力な制御を提供します。 IronPDFと組み合わせて使用することで、安全でモジュール化され、保守しやすいアプリケーションの作成が可能になります。 IronPDFに関連するコードを内部クラスやメソッド内に囲むことで、抽象化、セキュリティ、そして使いやすさの間で妥協点を見つけることができます。 IronPDFのようにPDFドキュメント処理などの重要な機能を管理するライブラリを使用する場合、C#アプリケーションにおいて安定性とスケーラビリティのあるアーキテクチャを促進するために、カプセル化と限定アクセスの概念を取り入れることが特に重要です。

非常に強力なライセンス、再設計オプション、およびより長い期間のプログラミングサポートが、IronPDFの$749 ライトバンドルに含まれています。 クライアントは、ウォーターマーク付きのテスト期間中に実際のアプリケーション環境でアイテムをテストすることができます。 詳しく学ぶIronPDF ライセンシングメリット、承認プロセス、ドラフトフォームを理解すること。 こちらをご覧くださいIron Software ウェブサイト詳細をご覧ください。

< 以前
C# パターン マッチング式(開発者向けの仕組み)
次へ >
C# LINQ Distinct(開発者向けの動作方法)