部分 class 的多重继承
Multiple Inheritance for partial class
我正在查看我继承的一些代码。我已经添加了 PrintSpecialInfo()
方法,并在尝试调用它时得到下面显示的错误。
我对 class 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
}
}
在我看来,您的 "SpecialPermit" 实际上是 2 种不同的 "SpecialPermit" 对象类型。
您不能只添加 "partial" 并期望名称空间交织在一起。
从技术上讲,第一个是 NAMESPACE.Permit.SpecialPermit
,另一个是 NAMESPACE.SpecialPermit
此外,这两个对象都有一个超类这一事实表明它们并不相同。如评论中所述,C# 不允许多重继承。因此,除非 "Permit" 是 "UserControl",否则 SpecialPermit 的第二个定义会产生编译错误。
所以要回答,您无权访问该方法,因为它不在该对象中。
如果你想访问它,你需要确保你是defining/extending同一个对象。您发布的代码定义了 2 种不同的 "SpecialPermit" 对象类型。
我正在查看我继承的一些代码。我已经添加了 PrintSpecialInfo()
方法,并在尝试调用它时得到下面显示的错误。
我对 class 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
}
}
在我看来,您的 "SpecialPermit" 实际上是 2 种不同的 "SpecialPermit" 对象类型。
您不能只添加 "partial" 并期望名称空间交织在一起。
从技术上讲,第一个是 NAMESPACE.Permit.SpecialPermit
,另一个是 NAMESPACE.SpecialPermit
此外,这两个对象都有一个超类这一事实表明它们并不相同。如评论中所述,C# 不允许多重继承。因此,除非 "Permit" 是 "UserControl",否则 SpecialPermit 的第二个定义会产生编译错误。
所以要回答,您无权访问该方法,因为它不在该对象中。
如果你想访问它,你需要确保你是defining/extending同一个对象。您发布的代码定义了 2 种不同的 "SpecialPermit" 对象类型。