79

アセンブリの内部クラスにアクセスするにはどうすればよいですか? System.ComponentModel.Design.DesignerHost にアクセスしたいとします。ここで、DesignerHost は内部のシール クラスです。

アセンブリと型をロードするコードを作成するにはどうすればよいですか?

4

2 に答える 2

118

一般に、これを行うべきではありません。型が internal とマークされている場合、それはアセンブリの外部から使用することを意図していないことを意味します。これは、後のバージョンで削除、変更などされる可能性があります。

ただし、リフレクションを使用すると、パブリックではないBindingFlags型とメンバーにアクセスできます。引数を取るオーバーロードを探して、BindingFlags.NonPublic渡すフラグに含めるだけです。

型の完全修飾名 (アセンブリ情報を含む)がある場合は、呼び出すだけType.GetType(string)で機能します。事前にアセンブリを知っていて、そのアセンブリ内のパブリック型を知っている場合はtypeof(TheOtherType).Assembly、アセンブリ参照を取得するために を使用する方が一般的に簡単で、 を呼び出すことができますAssembly.GetType(string)

于 2009-08-11T09:14:35.690 に答える
17

アセンブリをロードして、例で引用したタイプを入力するには、次のようにします。

Assembly design = Assembly.LoadFile(@"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Design.dll");
Type designHost = design.GetType("System.ComponentModel.Design.DesignerHost");
于 2009-08-11T09:24:23.223 に答える