タグ付けされた質問 「reflection」

リフレクションは、実行時にプログラムの構造や動作を観察および/または変更するプログラムの機能です。リフレクションは、サポートするプログラミング言語に依存しています。このタグを使用する場合は、使用しているプログラミング言語にタグを付けてください。


13
.NETリフレクションのコストはどれくらいですか?
私は常に、反射がいかに悪いかを耳にします。私は通常、反射を避け、それなしでは問題を解決できない状況をめったに見つけませんが、私は思っていました... アプリケーションでリフレクションを使用したことがある人にとって、パフォーマンスヒットを測定しましたか、それは本当にそれほど悪いことですか?

6
特定の属性を持つプロパティのリストを取得するにはどうすればよいですか?
タイプtがあり、属性を持つパブリックプロパティのリストを取得したいと考えていますMyAttribute。この属性はAllowMultiple = false、次のようにでマークされています。 [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)] 現在私が持っているのはこれですが、もっと良い方法があると思っています: foreach (PropertyInfo prop in t.GetProperties()) { object[] attributes = prop.GetCustomAttributes(typeof(MyAttribute), true); if (attributes.Length == 1) { //Property with my custom attribute } } どうすればこれを改善できますか?申し訳ありませんが、これが重複している場合、そこには大量のリフレクションスレッドがあります...それは非常にホットなトピックのようです。
210 c#  .net  reflection 

13
プロパティの名前を文字列として取得します
(私が受け入れた答えを使用して作成した以下のソリューションを参照してください) リフレクションを含むいくつかのコードの保守性を改善しようとしています。アプリには、公開されたリモートインターフェイスに含まれていないアプリの部分にアクセスするためのExecuteというメソッドを公開する.NET Remotingインターフェイスがあります。 ここでは、アプリケーションが実行を介してアクセスできるようになっているプロパティ(この例では静的プロパティ)を指定する方法を示します。 RemoteMgr.ExposeProperty("SomeSecret", typeof(SomeClass), "SomeProperty"); したがって、リモートユーザーは次のように呼び出すことができます。 string response = remoteObject.Execute("SomeSecret"); アプリはリフレクションを使用してSomeClass.SomePropertyを検索し、その値を文字列として返します。 残念ながら、誰かがSomePropertyの名前を変更して、ExposeProperty()の3番目のパラメーターを変更するのを忘れると、このメカニズムが壊れます。 私は同等のものを必要としています: SomeClass.SomeProperty.GetTheNameOfThisPropertyAsAString() ExposePropertyの3番目のパラメーターとして使用するため、リファクタリングツールが名前の変更を処理します。 これを行う方法はありますか?前もって感謝します。 さて、これが私が作成したものです(私が選択した答えと彼が参照した質問に基づいて): // <summary> // Get the name of a static or instance property from a property access lambda. // </summary> // <typeparam name="T">Type of the property</typeparam> // <param name="propertyLambda">lambda expression of the …

13
リフレクションを使用して、現在実行中のメソッドの名前を見つけることができますか?
タイトルのように:リフレクションは現在実行中のメソッドの名前を与えることができます。 ハイゼンベルク問題のため、私はそうは思わない傾向があります。現在のメソッドを変更せずに現在のメソッドを通知するメソッドをどのように呼び出しますか?しかし、私は誰かが私がそこで間違っていることを証明できることを望んでいます。 更新: パート2:これを使用して、プロパティのコード内を調べることもできますか? パート3:パフォーマンスはどのようになりますか? 最終結果 MethodBase.GetCurrentMethod()について学びました。また、スタックトレースを作成できるだけでなく、必要に応じて必要なフレームのみを作成できることも学びました。 これをプロパティ内で使用するには、.Substring(4)を使用して「set_」または「get_」を削除します。
202 .net  reflection 



9
リフレクション:パラメータを使用してメソッドを呼び出す方法
パラメータ付きのリフレクションを介してメソッドを呼び出そうとすると、次のようになります。 オブジェクトがターゲットタイプと一致しません パラメータなしでメソッドを呼び出すと、正常に動作します。次のコードに基づいて、メソッドを呼び出すと、Test("TestNoParameters")正常に動作します。ただし、を呼び出すとTest("Run")、例外が発生します。コードに問題がありますか? 私の最初の目的は、オブジェクトの配列を渡すことなどでしたが、public void Run(object[] options)これは機能せず、文字列などの単純なものを試しましたが、成功しませんでした。 // Assembly1.dll namespace TestAssembly { public class Main { public void Run(string parameters) { // Do something... } public void TestNoParameters() { // Do something... } } } // Executing Assembly.exe public class TestReflection { public void Test(string methodName) { Assembly assembly = …

7
クラスオブジェクトがJavaの別のクラスオブジェクトのサブクラスであるかどうかを確認する
JavaのリフレクションAPIをいじって、いくつかのフィールドを処理しようとしています。今、私は自分のフィールドのタイプを特定することにこだわっています。文字列は簡単ですmyField.getType().equals(String.class)。同じことが他の非派生クラスにも当てはまります。しかし、どのようにして派生クラスをチェックしますか?たとえばのLinkedListサブクラスとしてList。isSubclassOf(...)またはextends(...)メソッドが見つかりません。すべてgetSuperClass()を調べて自分のスーパークラスを見つける必要がありますか?
196 java  class  reflection 

2
型の初期化子を見つけるとNullReferenceExceptionがスローされるのはなぜですか?
これは私を困らせました。野田タイムのためにいくつかのテストを最適化しようとしていました。そこでは、いくつかのタイプ初期化チェックを行っています。すべてをnewにロードする前に、型に型初期化子(静的コンストラクターまたは初期化子付きの静的変数)があるかどうかを確認すると思いましたAppDomain。驚いたことに、この小テストが投げたNullReferenceException-にヌル値がされていないにも関わらず、私のコード。デバッグ情報なしでコンパイルされた場合にのみ例外をスローします。 これは、問題を示すための短いが完全なプログラムです。 using System; class Test { static Test() {} static void Main() { var cctor = typeof(Test).TypeInitializer; Console.WriteLine("Got initializer? {0}", cctor != null); } } そして、コンパイルと出力のトランスクリプト: c:\Users\Jon\Test>csc Test.cs Microsoft (R) Visual C# Compiler version 4.0.30319.17626 for Microsoft (R) .NET Framework 4.5 Copyright (C) Microsoft Corporation. All rights reserved. c:\Users\Jon\Test>test …

4
JavaリフレクションのgetFieldsとgetDeclaredFieldsの違いは何ですか
Javaリフレクションを使用する場合のgetFieldsメソッドとメソッドの違いについて少し混乱getDeclaredFieldsしています。 getDeclaredFieldsクラスのすべてのフィールドへのアクセスを提供し、getFieldsパブリックフィールドのみを返すこと を読みました。これが事実なら、なぜあなたはいつもいつも使用しないのですgetDeclaredFieldsか? 誰かがこれについて詳しく説明して、2つの方法の違いを説明できますか?また、いつ/なぜ一方を他方で使用したいのですか?
194 java  reflection 

5
アセンブリ名を取得しています
C#の例外クラスには、デフォルトでアセンブリの名前に設定されるソースプロパティがあります。 (別の文字列を解析せずに)この正確な文字列を取得する別の方法はありますか? 私は以下を試しました: catch(Exception e) { string str = e.Source; //"EPA" - what I want str = System.Reflection.Assembly.GetExecutingAssembly().FullName; //"EPA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" str = typeof(Program).FullName; //"EPA.Program" str = typeof(Program).Assembly.FullName; //"EPA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" str = typeof(Program).Assembly.ToString(); //"EPA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" str = typeof(Program).AssemblyQualifiedName; //"EPA.Program, EPA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" }

3
Type.GetProperty()に対してBindingFlags.IgnoreCaseが機能しない
以下を想像してください タイプTにはフィールドCompanyがあります。次のメソッドを実行すると、完全に機能します。 Type t = typeof(T); t.GetProperty("Company") ただし、次の呼び出しはnullになりますが Type t = typeof(T); t.GetProperty("company", BindingFlags.IgnoreCase) 誰かがアイデアを得ましたか?

12
JSONデータからJSONスキーマを生成するツール[終了]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 3年前休業。 この質問を改善する このjsonスキーマドラフトがあります。JSONデータのサンプルを取得し、JSONスキーマのスケルトンを生成したいと思います。これは、手作業でやり直し、説明や必須など、特定の例からは推測できないものを追加できます。 たとえば、私の入力からexample.json: { "foo": "lorem", "bar": "ipsum" } 私はjson_schema_g​​eneratorツールを実行して、以下を取得します。 { "foo": { "type" : "string", "required" : true, "description" : "unknown" }, "bar": { "type" : "string", "required" : true, "description" : "unknown" } } この例は手動でコーディングされているため、エラーが発生している可能性があります。JSON-> JSONスキーマの変換に役立つツールはありますか?


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.