我想爲Transaction,Order和OrderCollection使用一些基本的抽象類。 TransactionCog繼承Transaction和OrderCollection繼承List和OrderCogCollection繼承OrderCollection和OrderCog繼承Order。 TransactionCog必須有OrderCogCollection的成員。具有通用列表的抽象屬性的C#抽象類覆蓋
我想使用事務有一個OrderCollection的抽象屬性,以便TransactionCog必須重寫屬性,但使用一種OrderCogCollection來代替。當然,我現在要去的方式是給我一個TransactionCog沒有實現繼承的抽象成員。
我想這樣做,如果我有一個小工具或齒輪命令下一步,我從基地繼承,它迫使我用相應Order'ItemName'Collection覆蓋屬性。部分原因是每個Order'ItemName'Collection都會有一些它自己的特殊功能和屬性,其他人不會。如果可能的話,我只是無法看到我應該具備這種能力的地方。
public abstract class Transaction
{
public abstract OrderCollection<Order> Orders
{ get; set; }
}
public abstract class Order
{
private int _id;
public int ID
{
get { return _id; }
set { _id = value; }
}
}
public abstract class OrderCollection<T> : System.Collections.Generic.List<T>
{
abstract public int GetIntValue(int test);
}
class OrderCog : TestWindowsFormCsharp.Classes.BaseClasses.Order
{
public OrderCog()
{
}
}
public class OrderCogCollection<OrderCog> : TestWindowsFormCsharp.Classes.BaseClasses.OrderCollection<OrderCog>
{
public OrderCogCollection()
{
}
public override int GetIntValue(int test)
{
return test;
}
}
class TransactionCog : TestWindowsFormCsharp.Classes.BaseClasses.Transaction
{
private OrderCogCollection<OrderCog> cogs;
public TransactionCog()
{
}
public override OrderCogCollection<OrderCog> Orders
{
get { return cogs; }
set { cogs = value; }
}
}
對不起,長期走在這,就死在那了我遠離這方面的工作最壞的一面項目。我看到你在這裏嘗試,但是當做你的覆蓋,我得到一個錯誤的get和set不能隱式地將OrderCollection轉換爲OrderCogCollection 。 –
langc334