問題タブ [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.
c# - リフレクションを使用してプライベート メソッドを呼び出すにはどうすればよいですか?
私のクラスにはプライベート メソッドのグループがあり、入力値に基づいて動的に呼び出す必要があります。呼び出しコードとターゲット メソッドの両方が同じインスタンスにあります。コードは次のようになります。
この場合、GetMethod()
プライベート メソッドは返されません。プライベートメソッドを見つけるために何BindingFlags
を提供する必要がありますか?GetMethod()
c# - 実行時にロードされるアセンブリで共通の log4net 参照を使用するにはどうすればよいですか?
次を使用して、実行時に複数のアセンブリをロードするシングルスレッドアプリケーションがあります。
この方法で読み込まれたアセンブリが、残りのアセンブリと同じ log4net.ILog 参照を使用することを望みます。しかし、ランタイムにロードされたアセンブリにはまったく異なる参照があり、独自の構成が必要なようです。単一の log4net.ILog を、.NET インターフェイスを使用して実行時にロードされたアセンブリ全体で使用できるかどうかを知っている人はいますか?
Program クラスの log4net.ILog 作成およびサポート コードは次のとおりです。
python - Python モジュール内のすべての関数を一覧表示する方法は?
システムに Python モジュールがインストールされており、そのモジュールで使用できる関数/クラス/メソッドを確認したいと考えています。
help
それぞれで関数を呼び出したい。ClassName.methods
Ruby では、そのクラスで使用可能なすべてのメソッドのリストを取得するようなことができます。Pythonに似たようなものはありますか?
例えば。何かのようなもの:
java - 列挙型がクラスの場合に Java リフレクションを使用する方法は?
定数がクラスである列挙型を使用していました。定数でメソッドを呼び出す必要がありましたが、コンパイル時の依存関係を導入できず、列挙型は実行時に常に使用できるとは限りませんでした (オプションのインストールの一部)。したがって、リフレクションを使用したかったのです。
これは簡単ですが、以前は列挙型でリフレクションを使用したことがありませんでした。
列挙型は次のようになります。
リフレクションを使用して定数のメソッドを呼び出す例は何ですか?
.net - INotifyPropertyChanged プロパティ名 - ハードコードとリフレクション?
INotifyPropertyChanged を使用するときにプロパティ名を指定する最良の方法は何ですか?
ほとんどの例では、PropertyChanged イベントの引数としてプロパティ名をハードコーディングしています。私は MethodBase.GetCurrentMethod.Name.Substring(4) を使用することを考えていましたが、リフレクションのオーバーヘッドについて少し不安です。
c# - タイプのデフォルトコンストラクターを取得する最も効率的な方法
System.Typeのデフォルトコンストラクター(つまり、パラメーターのないインスタンスコンストラクター)を取得する最も効率的な方法は何ですか?
私は以下のコードの行に沿って何かを考えていましたが、それを行うためのより単純でより効率的な方法があるはずです。
reflection - ユニバーサル リフレクション API?
しばらく前に、コードを処理するアルゴリズムに取り組んでおり、リフレクション API が必要でした。複数の言語での実装に関心がありましたが、ある言語のリフレクション API は他の言語では機能しません。すべての言語、またはいくつかの主流言語 (.NET、Java、Ruby、Python) で機能する「ユニバーサル リフレクション API」のようなものはありますか?
ない場合、異なる言語のクラスを処理できるようなものを構築することは可能ですか?
複数の言語からのオブジェクト指向コードを処理するための統一された方法を持つにはどうすればよいですか?
.net - クラスのプロパティ名を取得する
データバインディングを使用してデータを収集するwinformアプリケーションがあります。文字列を使用してプロパティをtexteditにリンクする必要があることを除いて、すべて問題ないように見えます。
Me.TextEdit4.DataBindings.Add(New System.Windows.Forms.Binding("EditValue", Me.MyClassBindingSource, "MyClassProperty", True))
これは問題なく動作しますが、クラスのプロパティ名を変更すると、コンパイラは明らかに警告しません。
リフレクションによってプロパティ名を取得できるようにしたいのですが、必要なプロパティの名前を指定する方法がわかりません (クラスのすべてのプロパティを反復処理する方法しか知りません)
何か案が?
c# - C#: リスト内のすべての項目の任意のプロパティの最大値と最小値を取得する
タイプのアイテムを保持する特殊なリストがありますIThing
:
リスト内のすべてのものの特定のプロパティの最大値または最小値を知る必要がある場合があります。「聞かないでください」という理由で、リストにそれを理解させます。
とてもいいですね。しかし、最小重量が必要な場合もあれば、最大速度が必要な場合もあります。GetMaximum*()/GetMinimum*()
すべてのプロパティにペアは必要ありません。
解決策の 1 つは反射です。次のようなもの (鼻をほじって、コードの匂いが強い!):
これを達成するためのより良い、臭いの少ない方法はありますか?
ありがとう、エリック
編集: @Matt: .Net 2.0
結論: .Net 2.0 (Visual Studio 2005 を使用) にはこれ以上の方法はありません。近いうちに .Net 3.5 と Visual Studio 2008 に移行する必要があるかもしれません。みんなありがとう。
結論: リフレクションよりもはるかに優れたさまざまな方法があります。ランタイムと C# のバージョンによって異なります。違いについては、Jon Skeetsの回答をご覧ください。どの回答も大変参考になります。
Sklivvz の提案 (匿名の方法) に行きます。Sklivvz のアイデアを実装する他の人々 (Konrad Rudolph、Matt Hamilton、および Coincoin) からのコード スニペットがいくつかあります。残念ながら、私は1つの答えしか「受け入れる」ことができません。
どうもありがとうございました。Sklivvzだけがクレジットを取得しますが、誰もが「受け入れられた」と感じることができます;-)
c# - C#式ツリーに関するアドバイス
クラスの型(またはインスタンス)とともに、式ツリーをパラメーターとして受け入れるメソッドに取り組んでいます。
基本的な考え方は、このメソッドが検証に使用されるコレクションに特定のものを追加することです。
このメソッドは次のように呼び出されます。
渡されるプロパティ名を強く型付けしたいので、このようにしています。
私が苦労しているいくつかのこと..
PropertyInfo
DoSomething内で、 (渡された本体から)Tの型を取得し、それをrule[]とともにコレクションに追加したいと思います。現在、expression.Bodyを使用し、「Convert。([propertyname])」から[propertyname]を削除し、リフレクションを使用して必要なものを取得することを考えています。これは面倒で間違っているようです。もっと良い方法はありますか?- これは私が使用している特定のパターンですか?
- 最後に、私が行っていることについての私の誤解に関する提案や説明があれば幸いです。また、C#式ツリーに関するリソースや優れた情報も高く評価されます。
ありがとう!
イアン
編集:
expression.Body.ToString()
DoSomethingメソッド内で返されるものの例は、上記の例から呼び出された場合に「Convert(t.MyProperty)」を含む文字列です。
強く型付けする必要があるので、プロパティ名を変更してもコンパイルされません。
提案をありがとう!