【发布时间】:2019-12-13 04:41:57
【问题描述】:
我正在查看我继承的一些代码。我添加了PrintSpecialInfo() 方法并在尝试调用它时得到下面的错误显示。
我对SpecialPermit 类感到困惑。这是Permit 和System.Windows.Forms.UserControl 的多重继承的情况吗?
如何通过btnSave_Click 方法访问PrintSpecialInfo?
Permit.part.cs
public partial class Permit : System.IComparable
{
public partial class SpecialPermit : Permit
{
public virtual void PrintSpecialInfo()
{
System.Diagnostics.Trace.WriteLine("Permit.part.cs.PrintSpecialInfoTab --------------------");
System.Diagnostics.Trace.WriteLine("\tId: " + this.Id);
}
}
}
SpecialPermit.cs
public partial class SpecialPermit : System.Windows.Forms.UserControl
{
private void btnSave_Click (object sender, System.EventArgs e)
{
this.PrintSpecialInfo(); // SpecialPermit does not contain a definition for PrintSpecialInfo and no accessible extension method accepting a first argument of type SpecialPermit could be found
}
}
【问题讨论】:
-
C#中不允许继承多个实现,所以不是多重继承。
-
为什么
SpecialPermit定义在Premit内部?通常你只会对包含类内部使用的私有类这样做。 -
@R.J.Dunnill 我认为您的意思是“类”,而不是“实现”,因为实现可能意味着您可以实现多个接口。
-
@R.J.Dunnill 你继承了一个类。你实现了一个接口。这就是为什么你的措辞令人困惑。
-
我猜你必须将其他部分类嵌套在
Permit的部分中?不确定这是否可行。我只是建议将SpecialPermit拉出Permit。
标签: c# multiple-inheritance partial-classes