У меня следующая ситуация:
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
Реализуются только базовые интерфейсы, а не производные интерфейсы деталей. Но почему?