変更できないアセンブリ(ベンダー提供)があり、そのアセンブリには物体タイプですが、実際には内部タイプです。
アセンブリからオブジェクトのフィールドやメソッドにアクセスするにはどうすればよいですか?
ベンダー提供のアセンブリは変更できないことに注意してください。
本質的には、私が持っているものは次のとおりです。
ベンダーより:
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")]
この情報は入手可能ですここ。