Reflectionを使用して内部クラスにアクセスする方法
2023-08-09 01:17:35
質問
アセンブリの内部クラスにアクセスするにはどうすればよいですか。 私がSystem.ComponentModel.Design.DesignerHostにアクセスしたい場合を考えてみましょう。ここで、DesignerHostは内部クラスであり、シールされたクラスです。
どのように私はアセンブリと型を読み込むためのコードを書くことができますか?
どのように解決するのですか?
一般に、あなたは はしてはいけません。 もしある型が internal とマークされたなら、それはアセンブリの外からそれを使うことを意図していないことを意味します。それは、後のバージョンで削除されたり、変更されたりする可能性があります。
しかし、リフレクション
は
を取るオーバーロードを探せば、公開されていない型やメンバーにアクセスすることができます。
BindingFlags
引数を取るオーバーロードを探し、そのオーバーロードに
BindingFlags.NonPublic
を渡すフラグに含めてください。
がある場合は
完全修飾された
の名前 (アセンブリ情報を含む) がある場合、単に
Type.GetType(string)
を呼び出すだけで動作するはずです。もし、アセンブリがあらかじめわかっていて、そのアセンブリの中のパブリックな型がわかっている場合は
typeof(TheOtherType).Assembly
を使ってアセンブリの参照を取得する方が一般的には簡単で、その後に
Assembly.GetType(string)
.
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み] リフレクションを使用して文字列からプロパティ値を取得する
-
[解決済み] enumを列挙するには
-
[解決済み] ディープクローンオブジェクト
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み] C#でベースコンストラクタを呼び出す
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] リフレクションを使ってジェネリックメソッドを呼び出すにはどうしたらいいですか?
-
[解決済み] コードが含まれるアセンブリのパスを取得するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み】ORA-01008: すべての変数がバインドされていません。これらはバインドされています。
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。