問題タブ [getproperties]

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 投票する
5 に答える
34058 参照

c# - Reflection を使用して、クラスとその基本クラス (上位階層) のすべてのプロパティを取得するにはどうすればよいですか? (C#)

だから私が今持っているのは次のようなものです:

objあるオブジェクトはどこにありますか。

obj.GetType()問題は、必要なプロパティの一部が、さらに上位の基本クラスの 1 つに含まれていないことです。デバッガーを停止して obj を見ると、取得したいプロパティを確認するためにいくつかの「基本」エントリを掘り下げる必要があります。それらを返すように設定できるバインディングフラグはありますか、それともType.BaseType階層を再帰的に掘り下げてGetPropertiesそれらすべてに対して行う必要がありますか?

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

c# - リフレクション-返されるオブジェクトのタイプを設定しますか?

さまざまなタイプのオブジェクトにデータ行を入力し、関連するオブジェクトの各属性=データ行の同様の名前フィールドに入力します。

これを行うには、ジェネリック関数を使用したいと思います。ジェネリック関数からリターンオブジェクトのタイプを強制するにはどうすればよいですか。<T>構文が実際に 何を意味するのかまだわかりません:PopulateObject<T>コンパイラエラーが発生したため、型を返しません-型'object'を'JobCard'に暗黙的に変換できません以下のコードを参照してください

----2番目の回答後に更新----

このコードの使用:private T PopulateObject(T dataObj、System.Data.DataRow dataRow){

しかし、私は別の障害にぶつかりました。属性の1つは、実際にはCustomerと呼ばれる別のオブジェクトであり、独自の11個の属性があります。ネストされたオブジェクトがまだ潜んでいるのではないかと思います。データ行にフィールドが1つしかない、これらのネストされたオブジェクトの入力をどのように処理しますか?

これらのオブジェクトを処理するには:-親ObjdataでChildObjタイプを抽出する必要があります-ChildObjTypeと完全なデータ行を渡すProcessChildObj()関数を呼び出します-そしてProcessChildObj()で名前を一致させ、設定しますその属性?

または(上記のコードのように)-PopulateObjectを再帰的に呼び出します。ただし、obj型を再帰呼び出しに渡そうとするとコンパイラが文句を言うので、これには問題があります。

propertyitem.SetValue(dataObj、PopulateObject(propertyitem、dataRow)、null); //コンパイラメッセージ「Operator'<'はタイプ'methodgroup'および'System.type'のオペランドに適用できません」を引き起こします

ネストされたchildObjのタイプを抽出して、そのタイプをパラメーターとして渡すにはどうすればよいですか?

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

c# - リフレクション - ネストされたオブジェクトのプロパティを取得する

参照:リフレクション - 返された obj のタイプを設定しますか? いくつかのプロパティを持つオブジェクト Call Jobcard があります。そのうちの 1 つは独自のプロパティを持つ Customer という別のオブジェクトで、そのうちの 1 つは Address という別のネストされたオブジェクトです。

これら 2 つの関数は、他のオブジェクト タイプも処理します。

問題は、PropertyInfo リストが渡された childObj のリストではないため、PopulateChildObject 関数が機能しないことです。ウォッチで PopulateChildObject に渡された dataObj を見ると、属性が 0 になっています。また、PopChildObj() に渡される dataObj のタイプは、Customer ではなく System.Reflection.RuntimePropertyInfo' です。私は何が欠けていますか?

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

reflection - リフレクションを使用してプロパティを取得する場合、検索を関心のあるサブクラスのみに制限するにはどうすればよいですか?

リフレクションを使用してアセンブリから特定のタイプのリストを正常に取得した後、それらのそれぞれのパブリックプロパティを取得したいと思います。

これらの各タイプは、少なくとも1つの基本クラスから派生します。

型のプロパティを取得すると、基本クラスからもプロパティを取得することに気付きます。

基本クラスのプロパティを除外して、getプロパティを呼び出しているタイプのプロパティのみを取得する方法が必要です。

特定の基本タイプから、基本タイプを除く基本タイプのサブクラスのみを取得する方法と似ていると思います。

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

c# - ICustomTypeDescriptor.GetPropertiesによって返されるプロパティを読み取り専用に動的に変更します

ICustomTypeDescriptorを実装し、PropertyGridでユーザーが表示および編集するクラスがあります。私のクラスには、ユーザーが後で変更を保存できるかどうかを決定するIsReadOnlyプロパティもあります。ユーザーが保存できない場合は、ユーザーに変更を許可したくありません。したがって、IsReadOnlyがtrueの場合、プロパティグリッドで読み取り専用になるように編集できるプロパティをオーバーライドしたいと思います。

ICustomTypeDescriptorのGetPropertiesメソッドを使用して、各PropertyDescriptorにReadOnlyAttributeを追加しようとしています。しかし、それは機能していないようです。これが私のコードです。

これはTypeDescriptor.AddAttributes()を使用する正しい方法でもありますか?呼び出し後にデバッグしている間、AddAttributes()プロップには同じ数の属性があり、いずれもReadOnlyAttributeではありません。

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

reflection - IEnumerable.GetProperties()

インターフェイス IFoo および IEnumerable から派生したクラス Foo があります。

GetProperties() を呼び出す方法は、IEnumerable のパブリック プロパティのみを返します (IFoo やこのクラスではありません)。

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

.net - TypeDescriptor.GetPropertiesはクラスから何も返しません

2つの単純なプロパティnumとnameを含むクラスTestObjectを定義しました。TestObjectクラスのオブジェクトにTypeDescriptor.GetProperties()を使用して、定義されたプロパティを取得しようとしています。しかし、それは何も返しません。

ここで簡単なものが欠けていますか?あなたの助けに感謝。

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

c# - csv ファイルの最初の行としてクラス オブジェクトの System.Reflection.PropertyInfo 名を抽出する方法

データ ソースから実際の汎用リストを作成する前に、System.Reflection を使用して csv テキスト ファイルの列ヘッダー情報の最初の行を出力しようとしています。

次のルーチンでは、オブジェクト定義のプロパティをループして、出力ファイルの最初の行の「列名」としてプロパティ名を使用しようとしています。

foreach ループはすぐに終了します。また、クラスに定数セパレーターを配置しましたが、それをフィールドセパレーター値として (「列」名ではなく) 使用したいと考えています。

このようなものを機能させることができれば、クラス内のプロパティの序数の位置が一貫して維持されると想定しています。

データ ソースからを作成する残りのコードは機能しますList<DocMetaData>が、この「最初の行」のものを追加したいと思います。

これについて助けてくれてありがとう。

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

c# - PropertyInfo からオブジェクトのプロパティにアクセスするにはどうすればよいですか?

オブジェクトのプロパティを foreach して PropertyInfo になった場合、オブジェクトの実際のプロパティにアクセスするにはどうすればよいですか?

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

c# - type.GetProperties()時に保護されたセッターを除外する

タイプを反映して、パブリックセッターのあるプロパティのみを取得しようとしています。これは私にはうまくいかないようです。以下のLinqPadスクリプトの例では、「Id」と「InternalId」が「Hello」とともに返されます。それらを除外するにはどうすればよいですか?