問題タブ [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.
c# - Reflection を使用して、クラスとその基本クラス (上位階層) のすべてのプロパティを取得するにはどうすればよいですか? (C#)
だから私が今持っているのは次のようなものです:
obj
あるオブジェクトはどこにありますか。
obj.GetType()
問題は、必要なプロパティの一部が、さらに上位の基本クラスの 1 つに含まれていないことです。デバッガーを停止して obj を見ると、取得したいプロパティを確認するためにいくつかの「基本」エントリを掘り下げる必要があります。それらを返すように設定できるバインディングフラグはありますか、それともType.BaseType
階層を再帰的に掘り下げてGetProperties
それらすべてに対して行う必要がありますか?
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のタイプを抽出して、そのタイプをパラメーターとして渡すにはどうすればよいですか?
c# - リフレクション - ネストされたオブジェクトのプロパティを取得する
参照:リフレクション - 返された obj のタイプを設定しますか? いくつかのプロパティを持つオブジェクト Call Jobcard があります。そのうちの 1 つは独自のプロパティを持つ Customer という別のオブジェクトで、そのうちの 1 つは Address という別のネストされたオブジェクトです。
これら 2 つの関数は、他のオブジェクト タイプも処理します。
問題は、PropertyInfo リストが渡された childObj のリストではないため、PopulateChildObject 関数が機能しないことです。ウォッチで PopulateChildObject に渡された dataObj を見ると、属性が 0 になっています。また、PopChildObj() に渡される dataObj のタイプは、Customer ではなく System.Reflection.RuntimePropertyInfo' です。私は何が欠けていますか?
reflection - リフレクションを使用してプロパティを取得する場合、検索を関心のあるサブクラスのみに制限するにはどうすればよいですか?
リフレクションを使用してアセンブリから特定のタイプのリストを正常に取得した後、それらのそれぞれのパブリックプロパティを取得したいと思います。
これらの各タイプは、少なくとも1つの基本クラスから派生します。
型のプロパティを取得すると、基本クラスからもプロパティを取得することに気付きます。
基本クラスのプロパティを除外して、getプロパティを呼び出しているタイプのプロパティのみを取得する方法が必要です。
特定の基本タイプから、基本タイプを除く基本タイプのサブクラスのみを取得する方法と似ていると思います。
c# - ICustomTypeDescriptor.GetPropertiesによって返されるプロパティを読み取り専用に動的に変更します
ICustomTypeDescriptorを実装し、PropertyGridでユーザーが表示および編集するクラスがあります。私のクラスには、ユーザーが後で変更を保存できるかどうかを決定するIsReadOnlyプロパティもあります。ユーザーが保存できない場合は、ユーザーに変更を許可したくありません。したがって、IsReadOnlyがtrueの場合、プロパティグリッドで読み取り専用になるように編集できるプロパティをオーバーライドしたいと思います。
ICustomTypeDescriptorのGetPropertiesメソッドを使用して、各PropertyDescriptorにReadOnlyAttributeを追加しようとしています。しかし、それは機能していないようです。これが私のコードです。
これはTypeDescriptor.AddAttributes()を使用する正しい方法でもありますか?呼び出し後にデバッグしている間、AddAttributes()プロップには同じ数の属性があり、いずれもReadOnlyAttributeではありません。
reflection - IEnumerable.GetProperties()
インターフェイス IFoo および IEnumerable から派生したクラス Foo があります。
GetProperties() を呼び出す方法は、IEnumerable のパブリック プロパティのみを返します (IFoo やこのクラスではありません)。
.net - TypeDescriptor.GetPropertiesはクラスから何も返しません
2つの単純なプロパティnumとnameを含むクラスTestObjectを定義しました。TestObjectクラスのオブジェクトにTypeDescriptor.GetProperties()を使用して、定義されたプロパティを取得しようとしています。しかし、それは何も返しません。
ここで簡単なものが欠けていますか?あなたの助けに感謝。
c# - csv ファイルの最初の行としてクラス オブジェクトの System.Reflection.PropertyInfo 名を抽出する方法
データ ソースから実際の汎用リストを作成する前に、System.Reflection を使用して csv テキスト ファイルの列ヘッダー情報の最初の行を出力しようとしています。
次のルーチンでは、オブジェクト定義のプロパティをループして、出力ファイルの最初の行の「列名」としてプロパティ名を使用しようとしています。
foreach ループはすぐに終了します。また、クラスに定数セパレーターを配置しましたが、それをフィールドセパレーター値として (「列」名ではなく) 使用したいと考えています。
このようなものを機能させることができれば、クラス内のプロパティの序数の位置が一貫して維持されると想定しています。
データ ソースからを作成する残りのコードは機能しますList<DocMetaData>
が、この「最初の行」のものを追加したいと思います。
これについて助けてくれてありがとう。
c# - PropertyInfo からオブジェクトのプロパティにアクセスするにはどうすればよいですか?
オブジェクトのプロパティを foreach して PropertyInfo になった場合、オブジェクトの実際のプロパティにアクセスするにはどうすればよいですか?
c# - type.GetProperties()時に保護されたセッターを除外する
タイプを反映して、パブリックセッターのあるプロパティのみを取得しようとしています。これは私にはうまくいかないようです。以下のLinqPadスクリプトの例では、「Id」と「InternalId」が「Hello」とともに返されます。それらを除外するにはどうすればよいですか?