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

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

変更できないアセンブリ(ベンダー提供)があり、そのアセンブリには物体タイプですが、実際には内部タイプです。

アセンブリからオブジェクトのフィールドやメソッドにアクセスするにはどうすればよいですか?

ベンダー提供のアセンブリは変更できないことに注意してください。

本質的には、私が持っているものは次のとおりです。

ベンダーより:

internal class InternalClass
  public string test;
end class

public class Vendor
  private InternalClass _internal;
  public object Tag {get{return _internal;}}
end class

ベンダーアセンブリを使用した私のアセンブリから。

public class MyClass
{
  public void AccessTest()
  {
    Vendor vendor = new Vendor();
    object value = vendor.Tag;
    // Here I want to access InternalClass.test
  }
}

ベストアンサー1

内部メンバーを別のアセンブリに公開できるようにするケースは 1 つだけあり、それはテスト目的です。

「フレンド」アセンブリが内部にアクセスできるようにする方法があるとします。

プロジェクトの AssemblyInfo.cs ファイルに、アセンブリごとに 1 行追加します。

[assembly: InternalsVisibleTo("name of assembly here")]

この情報は入手可能ですここ。

おすすめ記事