我想为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