ホームページ > バックエンド開発 > C++ > C# で外部アセンブリから内部クラスにアクセスするにはどうすればよいですか?

C# で外部アセンブリから内部クラスにアクセスするにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-01 09:13:10
オリジナル
940 人が閲覧しました

How Can I Access Internal Classes from External Assemblies in C#?

外部アセンブリから内部クラスへのアクセス

特定のシナリオでは、使用しているアセンブリがオブジェクト型を返すメソッドを提供しているが、オブジェクトは実際には、アクセスできないアセンブリ内の内部クラスに属しています。これにより、独自のアセンブリからその内部クラスのフィールドとメソッドにアクセスする方法という問題が生じます。

解決策: InternalsVisibleTo

ベンダー提供のアセンブリを変更することは問題外ですが、は、テスト目的で特定のアセンブリがベンダー アセンブリの内部メンバーにアクセスできるようにする場合のソリューションです。これは、InternalsVisibleTo 属性を使用して実現できます。

プロジェクトの AssemblyInfo.cs ファイルに、次の行を追加します。

[assembly: InternalsVisibleTo("name of assembly here")]
ログイン後にコピー

この行は、指定されたアセンブリ アクセスを内部メンバーに許可します。アクセスしようとしている内部クラスを含むアセンブリの。

使用法

InternalsVisibleTo 属性を追加してアセンブリを再構築すると、次のように外部アセンブリから内部クラスにアクセスできます:

public class MyClass
{
  public void AccessTest()
  {
    Vendor vendor = new Vendor();
    object value = vendor.Tag;

    // Cast the object to the internal class type
    InternalClass internalClass = (InternalClass)value;

    // Access the internal member
    string test = internalClass.test;
  }
}
ログイン後にコピー

注: アクセスを許可したアセンブリが確実にアクセスできるようにすることが重要です。 to は、運用環境で使用するとアプリケーションのセキュリティが危険にさらされる可能性があるため、テスト目的でのみ使用されます。

以上がC# で外部アセンブリから内部クラスにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート