部分 class 的多重继承

Multiple Inheritance for partial class

我正在查看我继承的一些代码。我已经添加了 PrintSpecialInfo() 方法,并在尝试调用它时得到下面显示的错误。 我对 class SpecialPermit 感到困惑。 PermitSystem.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" 对象类型。