我有以下情况:
using System.Data;
namespace TestClass
{
//this is a class generated by a wsdl and may not be changed
public partial class MyTableClass : DataTable
{
public MyRowClass this[int index]
{
get { return ((MyRowClass) (this.Rows[index])); }
}
public partial class MyRowClass : DataRow
{
protected internal MyRowClass(DataRowBuilder builder)
: base(builder)
{
}
}
}
//in this partial class I am able to extend the wsdl class by my own interfaces
public partial class MyTableClass : IDetailTable
{
IDetailRow IDetailTable.this[int index]
{
get { return this[index]; }
}
public partial class MyRowClass : IDetailRow
{
}
}
public interface IBaseTable
{
IBaseRow this[int index] { get; }
}
public interface IDetailTable : IBaseTable
{
new IDetailRow this[int index] { get; }
}
public interface IBaseRow
{
}
public interface IDetailRow : IBaseRow
{
}
}
第一部分是由 wsdl 定义生成的类。我没有能力在这里改变任何东西。我有很多 wsdl 定义文件,大部分都非常相似。所以我想为所有人定义通用接口,这将使我在我的代码中更容易处理它们。所以我的想法是通过像上面这样的部分类定义来扩展它们。
但是我在这里遇到一个错误,我不知道为什么以及我应该在这里做什么:
错误 1“TestClass.MyTableClass”没有实现接口成员“TestClass.IBaseTable.this[int]”。“TestClass.MyTableClass.this[int]”无法实现“TestClass.IBaseTable.this[int]”,因为它没有匹配的返回类型“TestClass.IBaseRow”。c:\users\mag\documents\visual studio 2012\Projects\TestClass\TestClass\Class1.cs 6 24 TestClass
只实现了基本接口,而不是派生的详细接口。但为什么?