[英]Deriving by multiple Interfaces containing same members with different data types
我有以下情況:
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
僅實現基本接口,而不實現派生的詳細信息接口。 但為什么?
C#僅支持單繼承,即每個類只能從一個超類擴展一個。 但是,在第一個partial
類中有MyTableClass
擴展了DataTable
,在第二個partial
類中有IDetailTable
。 這就是導致編譯錯誤的原因。
我想你真正想要知道的是,第二partial
類實際上應該extend
從WSDL定義類。 所以我會改變
public partial class MyTableClass : IDetailTable
至
public class MyAwesomeTableClass : MyTableClass
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.