【发布时间】:2010-09-27 11:01:22
【问题描述】:
我不确定如何为这个问题命名,但基本上我有一个这样的界面:
public interface IFoo
{
string ToCMD();
}
几个实现 IFoo 的抽象类,例如:
public abstract class Foo : IFoo
{
public abstract string ToCMD();
}
public abstract class Bar : IFoo
{
public abstract string ToCMD();
}
然后是继承 Foo 和 Bar 的类:
public class FooClass1 : Foo
{
public override string ToCMD()
{return "Test";}
} ///there are about 10 foo classes.
public class BarClass : Bar
{
public override string ToCMD()
{return "BarClass";}
} ///about the same for bar classes.
我这样做是为了当我有我的自定义列表时:
public class Store<T> : List<T> where T : IFoo {}
然后我可以限制进入其中的类型,但通过拥有接口,它仍将采用任何类型的 IFoo。
类似:
Store<Foo> store = new Store<Foo>(); //Only Foo types will work.
store.Add(new FooClass1()); //Will compile.
Store<IFoo> store = new Store<IFoo>(); //All IFoo types will work.
store.Add(new FooClass1()); //Will compile.
store.Add(new BarClass()); //Will compile.
我的问题是:这是解决这个问题的好方法吗?还是有更好的方法?
编辑:图片->
【问题讨论】:
标签: c# oop inheritance