构件其他接口I'got与理解为什么具有这种类的问题:通用C#类不实施与中的第一个
public class Section<T> : ISection
where T : ISectionItem
{
public string Title { get; set; }
public LinkedList<T> Items { get; set; }
}
实现这样的接口:
public interface ISection
{
string Title { get; set; }
LinkedList<ISectionItem> Items { get; set; }
}
我得到编译错误说:
Error 1
'JobTracker.Model.CV.Section<T>' does not implement interface member
'JobTracker.Model.CV.ISection.Items'.
'JobTracker.Model.CV.Section<T>.Items' cannot implement
'JobTracker.Model.CV.ISection.Items'
because it does not have the matching return type of
'System.Collections.Generic.IEnumerable<JobTracker.Model.CV.ISectionItem>'.
它应该是可能的,因为T被保证为b e类型ISectionItem
。可能的解决方案之一可能是创建addidiotional或ISection
与泛型ISection<T>
,但我不知道它会如何表现,当我想要与Xaml一起使用。有没有让编译器知道接口符合要求?
EDIT1:在ISection
改变IEnumerable
到LinkedList
,因为它是一个糟糕的概念和答案注重从题目有点撇开我是最感兴趣的
EDIT2:我的问题是更直接的原因牛逼实施ISectionItem
是不允许,但我注意到我是多么愚蠢。接口ISection
允许在一个列表Section<T>
中使用几个不同的类实现ISectionItem
。
伙计们,你们的答案是正确的,但我会将Olivier's标记为答案,因为它显示了解决这个问题的方法。
不是,不能'IEnumerable',必须是'IEnumerable ' –
2015-03-30 23:46:08
是的。我们需要将泛型类型参数添加到接口以使其工作。 – 2015-03-31 00:04:27