我想添加一些具体实例到所有具体实例从同一个接口继承的集合中。但它不编译。如何将不同的具体实例(都继承一个通用接口)添加到集合中?
// Common interface.
public interface ISearchService<in TSearchOptions> where TSearchOptions : ISearchOptions
{ .. }
// Concrete #1.
public class FooSearchService : ISearchService<FooSearchOptions>
{ .. }
// Concrete #2.
public class BaaSearchService : ISearchService<BaaSearchOptions>
{ .. }
因此,与上面的代码,既Foo
和Baa
无论从ISearchService<ISearchOptions>
继承但每一个定义其自身特定SearchOptions类型。
所以后来我想这(不编译):
var searchServices = new List<ISearchService<ISearchOptions>>
{
new FooSearchService(),
new BaaSearchService()
};
I've written the full code up on .NET Fiddle。
这个想法是,我有一个共同的具体实例的集合,他们都有一个共同的基础接口。
我敢肯定,我在这方面失败了,因为我常常只是不理解的一些*不一致的愚蠢。
我想也许我试图做太多..但是,这也行不通。
任何人都可以请帮忙吗?
我只想要一个共同的通用接口 :(
我认为你的意思是“实现一个通用接口”。继承是一个类/子类的概念(搜索“实现”与“继承”)。最好使用适当的语言概念,以免混淆可能学习的其他读者。 –