Я не уверен, как назвать этот вопрос, но в основном у меня есть такой интерфейс:
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.
Мой вопрос: хорошо ли это для этого? или есть лучший способ?
ИЗМЕНИТЬ: Изображение- >