本来我的程序包含Column和他的集合ColumnCollection,可以通过名称检索不同的列。
现在我要重构这段代码,我发现我的程序中包含很多通过名称检索数据的集合类,于是我定义了一个INamedObject接口,用来处理所有有名称的数据。
: Collection<T>, INamedCollection<T> where T : INamedObject
public interface IColumnCollection : INamedCollection<IColumn>
Column实现了IColumn接口,非常的简单,就不罗嗦了。
好,终于可以将正题了,我现在想实现让ColumnCollection实现IColumnCollection,代码如下:
很可惜的是,Vs2005下的C#认为我的NamedCollection<Column>没有实现:IColumnCollection的实现:
Error 1 'ConsoleApplication1.ColumnCollection' does not implement interface member 'ConsoleApplication1.INamedCollection<ConsoleApplication1.IColumn>.this[int]'. 'System.Collections.ObjectModel.Collection<T>.this[int]' is either static, not public, or has the wrong return type. C:\Documents and Settings\Steve\Local Settings\Application Data\Temporary Projects\ConsoleApplication1\Program.cs 83 15 ConsoleApplication1
Error 2 'ConsoleApplication1.ColumnCollection' does not implement interface member 'ConsoleApplication1.INamedCollection<ConsoleApplication1.IColumn>.this[string]'. 'ConsoleApplication1.NamedCollection<T>.this[string]' is either static, not public, or has the wrong return type. C:\Documents and Settings\Steve\Local Settings\Application Data\Temporary Projects\ConsoleApplication1\Program.cs 83 15 ConsoleApplication1
Error 3 'ConsoleApplication1.ColumnCollection' does not implement interface member 'System.Collections.Generic.IEnumerable<ConsoleApplication1.IColumn>.GetEnumerator()'. 'System.Collections.ObjectModel.Collection<ConsoleApplication1.Column>.GetEnumerator()' is either static, not public, or has the wrong return type. C:\Documents and Settings\Steve\Local Settings\Application Data\Temporary Projects\ConsoleApplication1\Program.cs 83 15 ConsoleApplication1
有哪位大侠讲讲MS为什么这样设计
此问题在已经有贴基本解决。