4

現在、顧客の ShoppingCart に問題があります。

彼は CartItems の間に Text を追加できるようにしたいので、List を 1 つだけにする方法があるかどうか疑問に思っていました。

私の解決策は、2 つのリストを持つことです。1 つはカートの重量と全体的な価格を計算するときに反復される IList タイプで、もう 1 つの IList は ListView に表示するために必要なフィールドのみを公開し、それは CartItem の SuperType です。(しかし、listView の追加フィールドにアクセスするにはどうすればよいでしょうか。Description-Text-Class で重量と価格を 0 にデフォルト設定すると、LSP が壊れてしまいます)。

しかし、2 つのリストがあるのは少し奇妙に感じます (それでも問題が発生します)。そのため、各項目の Type を指定する TypedList のようなものを作成できないかと考えていました。

どんな提案でも大歓迎です。私は両方のオプションに満足していません。

4

3 に答える 3

19

インターフェイスを使用します。

 ICartListItem

リストを次のようにします。

 List<ICartListItem>

ここで、いくつかの型を作成し、それらすべてにこのインターフェイスを実装させます。これらすべてを安全にリストに格納できます。

または、CartItem に既定のロジックをいくつか入れたい場合は、インターフェイスの代わりに基本クラスを使用します。

于 2008-11-25T13:20:29.297 に答える
1

クラスを作成し、その中で必要なリスト タイプのプロパティを定義してから、同じクラスのリストを作成できます。

たとえば、strings とbools のリストを作成したい場合、1 つのクラスに 2 つのプロパティを作成し、そのクラスのリストを作成します。

于 2012-09-13T07:36:16.210 に答える
0

インターフェイスはやり過ぎのように聞こえます。「TextAfterItem」のような名前のプロパティを現在の CartItem に追加するだけです。

また、セキュリティ オーバーヘッドの観点から、この機能のコストを顧客が理解していることを確認してください。これは単純な更新であるべきだと彼らは考えているようですが、ページに直接表示されるテキストをユーザーが入力できるようにしているのです。これは危険な提案です。

于 2008-11-25T14:28:01.643 に答える