問題タブ [methodinfo]
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# - リフレクションを使用してメソッドが「拡張メソッド」であるかどうかを確認する
アプリケーションの一部として、MethodInfo を受け取る関数があり、そのメソッドが「拡張メソッド」であるかどうかに応じて、特定の操作を行う必要があります。
MethodInfo クラスを確認しましたが、メソッドが拡張であることを示すIsExtensionプロパティまたはフラグが見つかりませんでした。
メソッドの MethodInfo からそれを見つける方法を知っている人はいますか?
c# - MethodInfo によるメソッドの呼び出し
特定の属性を持つメソッドを呼び出したい。そのため、すべてのアセンブリとすべてのメソッドを循環して、自分の属性を持つメソッドを見つけています。正常に動作しますが、MethodInfo しか取得していないときに特定のメソッドを呼び出すにはどうすればよいですか。
問題は、その特定のメソッドを含むクラスのインスタンスがわからないことです。メソッドが静的ではないため、適切に呼び出すことができません。また、可能であれば、このクラスの新しいインスタンスを作成することも避けたいと考えています。
c# - MethodInfo が基本メソッドのオーバーライドであるかどうかを判断する方法
型インスタンスの GetMethod 呼び出しから取得した MethodInfo オブジェクトが、型またはそのベースによって実装されているかどうかを判断しようとしています。
例えば:
ToString メソッドは Foo クラスに実装されている場合とされていない場合があります。foo の実装を取得しているかどうかを知りたいですか?
関連する質問
c# - C#MethodInfo getReturnType
MethodInfoのインスタンスを作成しました。
ここで、メソッドの戻りタイプがvoidであるかどうかを知りたいです。どのように?
c# - クラスメソッドの MethodInfo を実装して、インターフェイスメソッドの MethodInfo を取得するにはどうすればよいですか?
インターフェイスメソッドとMethodInfo
、インターフェイスを実装するクラスがあります。インターフェイス メソッドを実装するクラス メソッドのを見つけたい。Type
MethodInfo
simplemethod.GetBaseDefinition()
はインターフェイス メソッドでは機能しません。インターフェイスメソッドを明示的に実装する場合、任意の名前を付けることができるため、名前による検索も機能しません (はい、C# ではできません)。
では、すべての可能性をカバーする正しい方法は何ですか?
.net - MethodInfo からデリゲートを作成しますか?
グーグルでSOに着陸し、この他の質問を読んだ後
コンパイル時にパラメーターの数や型がわからなかった場合、MethodInfo から正しいデリゲートを作成することは可能ですか?
詳細: これは、Reflection.Emit または型ビルダーを使用せずにエレガントに実行できますか?
Delegate.CreateDelegate では、最初のパラメーターとして正しいデリゲート型を指定する必要があるため、これは私にとっては残念なことです。そうしないと、例外がスローされたり、不適切なメソッドが呼び出されたりします。
私はいくつかの忍者ギアを構築していますが、これは非常に役立ちます.ありがとう!
一般的な解決策は次のとおりです。
注: 私は、同じ Silverlight [ScriptableMember] メソッドを呼び出す複数の Javascript インターフェイスを持つ、何年も前に構築された JavaScript アプリケーションを置き換える Silverlight アプリケーションを構築しています。
新しい機能にアクセスするための新しいインターフェイスだけでなく、これらのすべてのレガシー JS インターフェイスもサポートする必要があるため、JS インターフェイスを自動的にセットアップし、適切な Silverlight メソッドへの呼び出しを「委譲」するものは、作業を大幅に高速化するのに役立ちます。
ここにコードを投稿することはできないので、それが要約です。
c# - Func で実行される呼び出されたメソッドの名前を取得する
Func として委任されているメソッドの名前を取得したいと思います。
どうすればこれを達成できますか?
-- 自慢する権利のために --
MakeExtractMethodName
はプロパティ呼び出しでも機能し、そのインスタンスでプロパティ名を返すようにします。
例えば。
c# - MethodInfo.Invoke は null を返すこともあれば、値を返すこともあります
私はasp.net MVCアプリケーションに取り組んでいます。
シンプルなlinqステートメントを使用してデータベースからデータをフェッチするリポジトリをラップするクラスがあります。キャッシュ ロジックを追加するデコレータ クラスを作成しました (キャッシュ アプリケーション ブロックを使用)。
装飾したいメソッドがいくつかあり、それぞれのロジックはすべて同じであるため (キャッシュに存在するかどうかを確認し、実際のゲッターを呼び出してキャッシュに保存しない場合)、次のように記述しました。
キャッシュなどに存在するかどうかをチェックする一般的なロジックを実行するヘルパー メソッド:
これはすべて正常に機能し、素敵です。装飾された各メソッドには、次のコードがあります。
問題は、発生している行がrealMethod.Invoke(...)
null を返す場合があることです。直後にブレークポイントを置いてその行に実行を戻すと、結果は null ではなく、DB からデータがフェッチされます。すべての入力変数が正しく、データが DB に存在し、2 回目の実行でデータが取得されるため、最初の実行で何が問題になるのでしょうか?!
ありがとう :)