問題タブ [propertyinfo]
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# - 構造型にプロパティ セット メソッドが見つかりません
.NET Reflection set private propertyで説明されているように、プライベート セッターを使用してプロパティを設定できます。ただし、プロパティが基本クラスで定義されている場合、System.ArgumentException がスローされます:「プロパティ セット メソッドが見つかりません」。
例は次のとおりです。
この状況に対処する方法を知っている人はいますか?
編集:与えられた例は、問題の簡単な図です。実際のシナリオでは、プロパティが基本クラスで定義されているのか、基本クラスの基本で定義されているのかわかりません。
c# - オブジェクトが暗黙の演算子を実装しているときに、PropertyInfo.PropertyTypeへのキャストをテストすることは可能ですか?
別のタイプ()に暗黙の演算子SpecialImage
を実装する特定のタイプ()のオブジェクトがあります。Image
SpecialImage
から派生していませんImage
。ただし、オペレーターを介して次のことが可能です。
リフレクションとオブジェクトによってループしているプロパティを持つオブジェクトがありImage
ます。
info.PropertyType
値を設定する前に、オブジェクトがキャスト可能かどうかを確認することはできますか?
c# - プロパティをC#のメソッドに渡す
いくつかのタイプ(毎回1つのタイプ)のプロパティの選択を渡す必要があります。これが私のタイプであると想定します。
したがって、このタイプのプロパティのリストを他のタイプ(ターゲットタイプ)に渡し、プロパティ名と属性を使用する方法が必要です。次の擬似コードのような値は必要ありません。
そのようなProduct.Id
名前と属性をそのまま渡して使用する方法はありますか?よくわかりませんPropertyInfo
が、役立つかもしれません。オブジェクトのリストを渡すことができると思いますが、その場合、属性と名前を使用できません。これを処理するための提案は何ですか。またはこのようなもの?私がまったく間違っている場合、どうすればそれを実装できますか?
c# - リストから T 型のプロパティ名と個別の値を取得する反射あり
プロパティのセットを持つクラス Product があります。
コンポーネントから を取得し、List<Product>
いくつかの理由から、Reflectionを使用して のプロパティを取得Product
し、各プロパティのDistinct
値とその値を 取得する必要がありCount()
ます。
振り返りによって目標を達成することは可能ですか? そうでない場合、それを行う他の方法はありますか?ありがとう!
アップデート
問題は、どのプロパティを使用する必要があり、どのプロパティがProduct
クラスに含まれているかを事前に知らないことです。だからこそ、リフレクションが最良の選択肢だと思います。
Switch - Case
スイッチがクラスから抽出されたProperty NameCase
を比較し、それぞれが特定のProperty Nameに対応する構造を使用して、同じ結果を得ることができます。しかし、このソリューションの柔軟性は私の問題には十分ではありません
c# - 不明な型を処理またはキャストできるラムダ式を作成する方法は?
未知の型を処理できる関数のラムダ式をどのように作成しますか? 申し訳ありませんが、質問があいまいであることは承知しており、作成するのに苦労しました。少しお時間をいただき、私の話を読んでいただければ幸いです。
私の目標は、定義済みのデータ コントラクトを使用して、文字列値の配列をオブジェクトに逆シリアル化することです。データ コントラクトのメンバーには位置番号があります。デシリアライザーの単純な仕事は、(適切な型変換を行った後に) 値をデータ メンバーにマップし、オブジェクトを構築することです。
問題は、デシリアライゼーションのパフォーマンスが悪いことです! VS プロファイラーを実行した後、オブジェクトのメンバーを設定するために使用される PropertyInfo.SetValue() に最も時間がかかっていることがわかりました。私のプログラムは、いつでも何千ものオブジェクトを逆シリアル化する必要があります。通常、データ コントラクトには 100 のメンバーが含まれます。つまり、1000 個のオブジェクトごとに 100,000 回の SetValue() 呼び出しがあり、それがドラッグされています。SetValue の呼び出しのサンプルを次に示します。
次に、このパフォーマンスの問題に対する有望な解決策があるUnknown Recipes からこのページを見つけました。SetValue を置き換えるには、コンパイル済みのラムダ式を使用する必要があるようですが、キャストで問題が発生しています。上記のリンクの例に従って、SetValue() を置き換えることができました。代替は、コンパイルされたラムダ式である Action デリゲートです。
まず、PropertyInfo クラスを拡張しました。
次にDictionary<PropertyInfo, Action<object, object>
、各 propertyInfo オブジェクトを対応する Action デリゲートに結び付けるオブジェクトを作成しました。このようにして、コンパイルされたラムダを「キャッシュ」し、逆シリアル化のバッチで再利用できます。そして、これは私が今それを呼ぶ方法です:
ただし、次の例外が発生します。
ここで DataContract1 は、構築しようとしているオブジェクトの型です。これは、型がコンパイル時に既知である Unknown Recipes の例のシナリオとは異なります。このラムダ式を機能させるにはどうすればよいでしょうか?
お時間をいただき、誠にありがとうございました!
c# - 子クラスからプロパティ値を取得し、それを dest オブジェクトに追加する c#
2 つのパラメーターを持つ静的メソッドがあります。1 つはすべての情報を含むソース オブジェクトで、すべての値を転送する宛先オブジェクトです。
dest
問題は、クラスにネストされたクラスがあり、それをオブジェクトに追加する方法がわからないことです。
私が得ることができるすべての助けに感謝します。
メソッドを呼び出すには、次のようにします。
c# - 静的バインド可能なプロパティ記述オブジェクトを作成する方法
WPF のバインディングが既存のプロパティをターゲットにしていることを確認するために、静的プロパティ名プロパティを使用しています。
ここで、プロパティに関する詳細情報を静的プロパティ記述オブジェクト、Name、Type、Id などにカプセル化する必要はありませんが、名前のパスバインド可能なプロパティを 1 つと、他のすべての情報を含むプロパティを 1 つ持つ必要はありません。
問題は、WPF がプロパティの型が String ではなく PropertyInfo であると不平を言うことです。
私は何とかこの制限を回避しようとしています。たとえば、PropertyInfo を暗黙的に文字列にキャスト可能にし、ToString をオーバーライドして、PropertyInfo から文字列へ、および PropertyInfo から文字列への TypeConverter の両方を追加しようとしました。何も機能しません。
また、Name プロパティに直接バインドすることもできません。
助言がありますか?
c# - オブジェクト内のカスタム タイプを検索
さまざまなプロパティを持つ Upload クラスがあり、このクラスまたは他のプロパティ内で各 UploadObject プロパティを見つけたいと思っています。Upload クラスですべての UploadObjects を見つけるにはどうすればよいですか?
編集:次のような関数を探しています:
java - AndroidのJavaコードを使用してデータを更新する
mysqlデータベースにデータを挿入する必要がある場合は、以下のコードを使用していることを意味します。
ここでは、addpropertyが使用されています....Androidのmysqlデータベースのデータを更新するためのコードはどのように記述されていますか...助けてください...
java - Androidで複数のプロパティを使用してksoap2リクエストを作成する方法は?
次の SOAP リクエストを作成する必要がありますが、成功できません。いくつかの方法を試しましたが失敗し、応答で常に空白のフィールドが返されます。
リクエストは次のようになります。
私は今のところこのコードを持っています:
誰かが私を助けることができれば、事前に感謝します!