私は書く方法がありますが、いくつかの共通点があると思います。私が見たいメソッドはオブジェクトと2つのものを取ります...まあ、私は2番目のものについてはあまり確かではありませんが、おそらく文字列です。ある一般的な方法を書く
オブジェクトはセットリスト(この場合、共通性はINotifyPropertyChangedインタフェースとINotifyPropertyChangedインタフェースの両方から継承しているように見える)からではあるが、汎用である必要があります。
文字列は、汎用オブジェクト内のプロパティの名前である必要があります。そのプロパティがそのオブジェクト内に存在するかどうかを調べてから、使用する前にそのオブジェクトが存在するかどうかを調べる必要があります(これは、そのプロパティでオブジェクトを比較する方法として使用されます)。
私はプロセスが...一般的なオブジェクトがメソッドに渡されることを推測します(プロパティ名文字列と共に)。オブジェクトにプロパティが含まれているかどうかを確認するチェック。そうであれば、引き続き 'object.PropertyName'にアクセスしてください。 'PropertyName'は指定された文字列です。
私はそれが簡単かどうかわかりませんが、賢明なのかどうかはわかりませんが、時間が節約できます。
このアドバイスを事前にお寄せいただきありがとうございます。
を編集してください。これまでのすべての返信をありがとう。私はいくつかのことを明確にしましょう:私が言ったとき、「アクセス」
の
明確化「...と何とか 『object.PropertyName』へのアクセス権を持っている」、私が意味することは方法がなければならないことでしたあたかもそのオブジェクトのプロパティであるかのようにそのプロパティ名を使用することができます。だから、渡された文字列が "ClientName"であったとしましょう。それが存在すると判断された場合、object.ClientNameを読み取る機能があります。 。私は
をやろうとしている何
私は、LINQのを使用してSQLデータベースにアクセスするWCFサービスを提供しています。私が言いましたオブジェクトは、SQLMetal.exeプログラムから生成されたエンティティなので、私のオブジェクトは 'Client'、 'User'、そしてこのようなものです。私はエンティティのリストを取ったメソッドを書いた。このメソッドは、コレクション内に存在しないエンティティのみを追加しました(重複している可能性のあるものもあります)。エンティティ内のプロパティ(データベースの列にあるデータに対応する)をチェックすることによって、重複したものがどれか分かりました。それは私が可変であるかもしれないと思ったプロパティです。
は、「アクセス」は、平均していますか?書く?どちらも?または...?コンテキストを設定するには、あなたが尋ねることを行う*便利な方法はありません。リフレクションを使うことも、 'Expression'を解読することも、' get'と 'set'デリゲートの両方を渡すこともできます。バッキングフィールドを 'ref'として渡します。どのオプションが最も望ましい(または、少なくとも望ましくない)かは、あなたがしたいことに大いに左右されます**。だから... **あなたはそれと何をしたいのですか? –
どのようにアクセスしますか?読む?書きます?どちらも? - Ha Marcが私を殴った。 – Nick
厳密に型指定されていなければ、 'いいえ、あなたは単に' object.ClientName'を呼び出すことはできません。 PropertyInfoオブジェクトを取得するためにリフレクションを使用し、それを使用して、以下の私の答えのように、各オブジェクトのプロパティの値を見つける必要があります。 – Nick