問題タブ [system.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 投票する
3 に答える
269 参照

c# - 新しいインスタンスを作成せずにネストされたインスタンスを反映する

単純なリフレクションコードで少し苦労しています。基本的に、私はメソッドを定義するインターフェースを持っています。次に、そのメソッドの基本実装を提供する抽象クラスがあります。

具象クラスには、同じ基本クラスから派生する可能性のある他のクラスのネストされたインスタンスを含めることができます。これは、次のサンプルで説明できます。

私の問題は、SampleObjectBaseのコメント付きコードで、一致するPropertyInfo値の具体的なインスタンスを取得できないことです。ループ内のPropertyInfoオブジェクトを見ると、タイプは正しいことがわかりますが、実装にすでに存在するインスタンスに直接アクセスする方法を見つけることができません。したがって、たとえばOuterSampleObject.IsValid()を実行すると、コードは期待どおりにInnerSampleObjectのPropertyInfoを検索します。InnerSampleObject.IsValid()を実行したい。

私は試しました(の複数のバリエーション):

と:

最初のものの問題は、IsValid()が静的ではないため(実際のインスタンスに焦点を合わせているため、静的ではないため)、InvokeMemberのターゲットとしてnullを渡すことができないことです。2つ目は単なるラメキャストですが、私が達成したいことの要点です。

上記のサンプルコードは、私が達成したいことの最小限の例にすぎません。完全なコードは、階層全体を再帰的にチェックし、検証の問題がある子とその子を返す自己検証DTOの一部です。

どんな助けでも大歓迎です。

0 投票する
4 に答える
13652 参照

c# - PropertyInfo - 属性を持つ GetProperties

Web フォーム プロジェクトのカスタム属性検証を作成しようとしています。

私はすでに自分のクラスからすべてのプロパティを取得できますが、それらをフィルタリングして属性を持つプロパティを取得する方法がわかりません。

例えば:

これにより、すべてのプロパティが返されます。しかし、たとえば「testAttribute」のような属性を使用してプロパティを返すにはどうすればよいですか?

私はすでにこれについて検索しましたが、これを解決しようとしてしばらくした後、ここで質問することにしました。

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

c# - アセンブリの型を取得します (エラー: System.Reflection.ReflectionTypeLoadException)

「Exception Details: System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types.Retrieve the LoaderExceptions property for more information.」というタイプの例外を受け取りました。次のコードを使用します。

各アセンブリで定義されている型を取得する必要がありますが、生成できないようです。

DLLの削除、ソリューションのクリーンアップ、ソリューションのリロードなど、間違ったアセンブリの作成に関連する一般的な手順をすべて実行しましたが、何も起こりませんでした。

エラーの詳細情報を取得する方法を見つけたり、どのアセンブリが問題を発生させているかなどを見つけたりして、この問題を解決するためのアイデアを求めたいと思います。現在の例外メッセージは非常に曖昧で、どれが問題であるかを認識できません。

ps: 追加情報です。再構築アクションを実行すると、すべてのプロセスがエラーなしで正しく生成されます。

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

c# - リフレクションでオブジェクトを取得

私はc#のメカニズムを探しています:そのように動作します:

car1とcar2はフィールドです

だから私はタイプではなく、反射のあるオブジェクトを取得したい:/ c#でそれを行うにはどうすればよいですか?

0 投票する
1 に答える
121 参照

c# - System.Reflection メソッドなし

アセンブリ内のすべてのメソッドを列挙し、それらをツリービューのノードに追加しようとしています:

問題は、どのモジュールにもメソッドがないことです。module.GetMethods().Length が 0 を返すので、treeview とは何の関係もないことはわかっています。足りないものはありますか?

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

c# - Using try-catch between multiple routines

This is somewhat of a follow up to a previous question I had asked, although I am now able to provide a lot more code to improve my question and further show my trouble with this area.

I have three routines here. Two of these routines work together - and if successful, will load an assembly into memory using System.Reflection. I would like for these routines to return an error if the file did not load properly into memory, but for some reason these try-catch statements simply will not work the way I would like.

Note: For this routine to work the file must be a .net assembly. If, for example, the file was programmed in VB6 an error will be thrown. This is the error I am trying to have returned to me.

I can clarify more if necessary but I'm not sure what other information to include at this point.

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

c# - C# でクラスを条件付きでインスタンス化する

新しいコードを機能させようとして、こぶをつぶしてきました。これは、if ステートメントを使用して、より単純で広範な方法で行うことができました。ただし、これはアプリケーションのバージョン 2 になるため、コードをもう少しクリーンで効率的にしたいと考えています。

私がやろうとしているのは、条件付きでクラスをインスタンス化することです。次のようになります。

私は両方のクラスを持っていますが、「航空機」というキーワードを使用したいので、クラスごとにコードの複数の部分を作成する必要はありません。また、C# では多重継承 (私の意見では、これでうまくいくと思います) を使用できないこともわかりました。この言語は比較的新しい言語です。

これまでのところ、クラスを希望どおりにインスタンス化することはできましたが、各クラス内で宣言された変数を使用できないようです。私はこれをしました:

MessageBox には型が正しく表示されますが、「Aircraft」オブジェクトを使用してクラス自体にアクセスすることはできません。これを行う方法は他にもあると確信していますが、どれも私にとっては問題ありません。

ありがとう!

0 投票する
0 に答える
103 参照

c# - オブジェクトのユーザー定義メンバーの検索

リフレクションを使用して C# オブジェクトのディープ コピーを実行する関数を作成しようとしています。今までは配列に対してそれを行うことができましたが、オブジェクトの場合、ユーザー定義メンバーとシステム定義メンバーを区別するにはどうすればよいですか?

0 投票する
1 に答える
380 参照

c# - カスタム属性による反映中のエラー

名前とリフレクションによるカスタマイズされた属性の存在に基づいて、クラスの特定のフィールドの値を取得しようとしています。私のカスタム属性は次のとおりです。

これを使用するサンプル クラスは次のとおりです。

私はまた、異なるフィールド名を持つ別のクラスを持っています:

リフレクションを通じて、フィールド名ではなく属性「名前」パラメーターを一致させることで値をコピーしようとしています。問題は、リフレクション中に、フィールドに渡された getCustomAttributes() メソッドを介してそのような比較が行われないことです。この問題を解決するための私のアプローチ(これまでのところ失敗しています)は次のとおりです。最初に、objSrc(入力された最初のクラスの)とobjDesc(空の2番目のクラス)の2つのオブジェクトを渡します。

次に、すべてのフィールドでリフレクションを繰り返し実行しようとしています

null を返すため、GetCustomAttributes() メソッドで問題が発生します。