問題タブ [reflection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
18 に答える
321848 参照

c# - インターフェイスを実装するすべてのタイプを取得する

リフレクションを使用して、最小限のコードでC#3.0 / .NET 3.5のインターフェイスを実装し、反復を最小限に抑えるすべてのタイプを取得するにはどうすればよいですか?

これは私が書き直したいものです:

0 投票する
3 に答える
5019 参照

c# - コンパクト フレームワーク - デフォルト コンストラクターを使用せずに型を動的に作成するにはどうすればよいですか?

.NET CF 3.5 を使用しています。作成したい型にはデフォルトのコンストラクターがないため、オーバーロードされたコンストラクターに文字列を渡したいと考えています。どうすればいいですか?

コード:

0 投票する
3 に答える
476 参照

.net - 基本フォームから継承されたフォームのコンポーネントへのアクセス

私のプロジェクトの多くのフォームは、基本フォームから継承しています。派生フォームの Controls コレクションを取得するのは簡単ですが、VS がこれを非公開としてマークするため、Components コレクションにアクセスする簡単な方法を見つけられませんでした。

これはリフレクションで実行できると思いますが、以前にリフレクションを使用したことがないため、どうすればよいかわかりません。

現在、GetComponents 関数をオーバーライドし、関心のあるコンポーネントの配列を返す、一種の不格好な回避策を使用しています。オーバーライドされた関数の実装を忘れやすいため、明らかにエラーが発生しやすくなっています。または、コンポーネントが追加されたときに更新します。

誰かが何かヒントを持っているか、より良い方法を提案できるなら、私は聞いてうれしいです.

0 投票する
7 に答える
12494 参照

c# - 反射によって作成されたオブジェクトを適切にキャストする方法

私はリフレクションに頭を悩ませようとしているので、私が書いているプログラムにプラグイン機能を追加することにしました。概念を理解する唯一の方法は、指を動かしてコードを書くことです。そのため、IPlugin および IHost インターフェイスで構成される単純なインターフェイス ライブラリ、IPlugin を実装するクラスのプラグイン実装ライブラリ、および単純なプラグイン オブジェクトで簡単な作業を行う IHost 実装クラスをインスタンス化するコンソール プロジェクト。

リフレクションを使用して、プラグイン実装 dll 内に含まれる型を繰り返し処理し、型のインスタンスを作成したいと考えました。このコードでクラスを正常にインスタンス化できましたが、作成したオブジェクトをインターフェイスにキャストできませんでした。

このコードを試してみましたが、期待どおりにオブジェクト o をキャストできませんでした。デバッガーを使用してプロセスをステップ実行すると、適切なコンストラクターが呼び出されました。オブジェクト o をクイックウォッチすると、実装クラスで期待していたフィールドとプロパティが含まれていることがわかりました。

これでコードが機能するようにしました。

ここに私の質問があります:

  1. Activator.CreateInstance(Type t) はオブジェクトを返しますが、オブジェクトが実装するインターフェイスにオブジェクトをキャストできませんでした。なんで?
  2. CreateInstance() の別のオーバーロードを使用する必要がありましたか?
  3. リフレクションに関連するヒントとコツは何ですか?
  4. 私が得ていない反射の重要な部分はありますか?
0 投票する
5 に答える
8571 参照

vb.net - VB.NET 基になる system.type を null 許容型から取得する

オブジェクトのプロパティに基づいてデータセットを作成しようとしています。たとえば、ID、Forename、Surname、DOB などのプロパティを持つ Person クラスのインスタンスがあります。リフレクションを使用して、オブジェクト プロパティに基づいて新しいデータセットに列を追加しています。

私の問題は、これらのプロパティの一部が、データセットでサポートされていない null 許容型であることです。null 許容型から基になるシステム型を抽出する方法はありますか?

ありがとう。

0 投票する
23 に答える
967499 参照

java - リフレクションとは何ですか? なぜ便利なのですか?

リフレクションとは何ですか? なぜ便利なのですか?

私は特に に興味がJavaありますが、原則はどの言語でも同じだと思います。

0 投票する
5 に答える
1203 参照

c# - 属性を使用して列挙型から列挙型へのマッピングと列挙型/定数からアクション スイッチ ステートメントを削減する

誰もが次のようなコードを見たことがあると思います。

この悪さの代わりに、次のようなことができます。

これで、リフレクションを使用して ServerEnum をリッピングし、enum 宣言自体から変換マッピングを取得できます。

ここで私が抱えている問題は、Enum2Enum 属性の宣言にあります。

これは機能しますが、オブジェクト o を Enum e に置き換えると機能しません。オブジェクトをコンストラクターに渡すことができるようにしたくありません。他の列挙型のみです。

これはコンパイルに失敗します。

コンパイルエラーの原因はありますか? 他に、マップに必要な情報を他にどのように渡すことができますか:

これは冗長すぎるように思えますが、それが唯一の方法である場合は、それを使用すると思います。

0 投票する
2 に答える
3568 参照

c# - RuntimeTypeHandle と Type の違いは何ですか?

そして、なぜコードで一方を他方に使用するのでしょうか?

0 投票する
28 に答える
244960 参照

c++ - C++ アプリケーションにリフレクションを追加するにはどうすればよいですか?

C++ クラスの名前、内容 (つまり、メンバーとその型) などをイントロスペクトできるようにしたいと考えています。ここでは、リフレクションを持つマネージ C++ ではなく、ネイティブ C++ について話しています。C++ が RTTI を使用して限られた情報を提供していることは理解しています。この情報を提供できる追加のライブラリ (またはその他の手法) はどれですか?

0 投票する
18 に答える
69256 参照

.net - リフレクションを使用して、現在実行中のメソッドの名前を見つけることができますか?

タイトルが言うように: リフレクションは現在実行中のメソッドの名前を教えてくれますか?

ハイゼンベルグ問題のため、私はそうではないと推測する傾向があります。現在のメソッドが何であるかを変更せずに、現在のメソッドを通知するメソッドを呼び出すにはどうすればよいでしょうか? しかし、誰かが私が間違っていることを証明してくれることを願っています。

アップデート:

  • パート 2: これを使用して、プロパティのコード内を調べることもできますか?
  • パート3:パフォーマンスはどうなる?

最終結果
MethodBase.GetCurrentMethod() について学びました。また、スタック トレースを作成できるだけでなく、必要に応じて必要なフレームだけを作成できることも学びました。

これをプロパティ内で使用するには、.Substring(4) を使用して「set_」または「get_」を削除します。