特定のシナリオでは、使用しているアセンブリがオブジェクト型を返すメソッドを提供しているが、オブジェクトは実際には、アクセスできないアセンブリ内の内部クラスに属しています。これにより、独自のアセンブリからその内部クラスのフィールドとメソッドにアクセスする方法という問題が生じます。
ベンダー提供のアセンブリを変更することは問題外ですが、は、テスト目的で特定のアセンブリがベンダー アセンブリの内部メンバーにアクセスできるようにする場合のソリューションです。これは、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 サイトの他の関連記事を参照してください。