私はインターフェイスと抽象クラスを初めて使用しています。私はショッピングカートシステムのオブジェクトのためのコアメソッドと変数を定義するために、いくつかのインターフェースを作成したいと考えています。次に、コア関数を実装する抽象クラスを作成します。アイデアは、プロジェクトごとに若干異なる方法で他のクラスで使用できるということです。ここでインターフェイスメソッドの戻り値の型を別のインターフェイスとして定義するにはどうすればよいですか?
は私の(カットダウン)インターフェイスです:
public abstract class Cart : ICart
{
private List<CartItem> _cartItems = new List<CartItem>();
public List<CartItem> CartItems
{
get
{
return _cartItems;
}
}
}
そして、私のCartItem:
public interface ICart
{
...
List<ICartItem> CartItems { get; set; }
}
public interface ICartItem
{
int ProductId { get; set; }
int Quantity { get; set; }
}
そしてここでは、イカールを実装して、私の抽象カートクラス(再び、唯一の関連する行を示す)でありますICartItemを実装するクラス:
私はクラスをコンパイルしようとするとエラーが発生するaying: 'Cart'はインターフェイスメンバー 'CartItems'を実装していません。 'Cart.CartItems'はSystem.Collections.Generic.Listの一致する戻り値の型がないため 'ICart.CartItems'を実装できません<ICartItem>。
私はここで考えているのは、インターフェイスがさまざまな方法でコア機能を実行し、新しいメソッドなどを追加する数多くのクラスによって実装できるということだと思っていました。なぜインターフェイスが実際に使用されているクラスそのクラスが実際にインターフェイスを正しく実装しているかぎりです。
ジェネリック医薬品は、これはこれを実装するためのかなり良い方法です#2.0 :) –
Cから入手可能です! – mquander
(C#2の問題を修正しました;あなたが気にしないことを願って) –