「ウィジェット」を含むデータベースがあるとしましょう。ウィジェットには、たとえば長さや幅などのプロパティがあります。wdigets を作成するための元の下位レベルの API はごちゃごちゃしているので、呼び出し元が簡単に操作できるように上位レベルの関数セットを作成しています。データベースは奇妙で、ウィジェット オブジェクトの作成のタイミングをうまく制御できません。具体的には、他の特定のことが最初に発生した後、処理の後の段階まで作成できません。しかし、ウィジェット オブジェクトが初期段階で作成されていると呼び出し元に考えてもらいたいので、最初からそのプロパティを取得/設定できます。
そこで、呼び出し元が操作できる「ProxyWidget」オブジェクトを実装しました。目的の値を格納できる private_Length や private_Width などのプライベート フィールドがあります。次に、呼び出し元がアクセスできるパブリック プロパティの Length と Width もあります。発信者が Width プロパティの値を設定するように指示した場合、ロジックは次のようになります。
- 対応するウィジェット オブジェクトがデータベースに既に存在する場合は、その Width プロパティを設定します。
- そうでない場合は、後で使用するために、指定された幅の値を private_Width フィールドに保存します。
後の段階で、ウィジェット オブジェクトがデータベースに作成されたことを確認したら、すべての値をコピーします。private_Width からデータベースの Width フィールドなどにコピーします (残念ながら、一度に 1 つのフィールド/プロパティ)。 .
これは、1 つのタイプのウィジェットで問題なく機能します。しかし、私は約 50 の型を持っており、それぞれに約 20 の異なるフィールド/プロパティがあり、これは維持できない混乱につながります。よりスマートなアプローチがあるかどうか疑問に思っています。おそらく、リフレクションを使用して「プロキシ」オブジェクトを作成し、フィールド/プロパティ データを一般的な方法でコピーできますか? どういうわけか共通コードを除外しますか? 「データ バインディング」パターンから何かを学べますか? 私はプログラマーではなく数学者であり、現在の私のアプローチはまったくばかげているのではないかと不安に思っています。私のコードはC#です。