无法在C#中继承该类

时间:2016-08-14 09:26:18

标签: c# wpf inheritance override

我有Capture类如下: -

namespace FrontEnd
{
    public partial class Capture : Window, DPFP.Capture.EventHandler
    {
        public Capture()
        {
            InitializeComponent();
        }

        protected virtual void init()
        {
            try
            {
                if (null != cap)
                    cap.EventHandler = this;
                else
                    SetPrompt("Cannot Use the Device right now");
            }
            catch { MessageBox.Show("Cannot Use the Device right now"); }
        }
   }
}

我的入学课程如下: -

namespace FrontEnd
{
    public partial class Enrollment : Capture
    {

        protected override void init()
        {
            base.Init();
            Enroller = new DPFP.Processing.Enrollment();
            UpdateStatus();
        }

    }
}

我在Enrollment.cs中遇到三个错误:

  

1 - “注册”的部分声明不得指定不同的基类。

     

2 - 'Enrollment.init()':找不到合适的方法来覆盖。

     

3 - 当前上下文中不存在名称“UpdateStatus”。

我不知道问题到底在哪里。也许是在继承中。此外,我正在使用WPF,所以我可能也应该更改xaml代码以便进行继承。

请帮助解决这些错误。

3 个答案:

答案 0 :(得分:1)

1 - “注册”的部分声明不得指定不同的基类。

我对这个案例的第一个猜测是,你有另一个类也是部分的,并且派生自与Capture不同的类。

2 - 'Enrollment.init()':找不到合适的方法来覆盖。

这里的问题是,基类Capture,Window和Eventhandler没有定义init()方法,所以你不能覆盖它。如果你从init方法中删除覆盖,你应该好好去。

可能这个问题很简单。在此方法中,您调用Init()方法,覆盖是小写init

3 - 当前上下文中不存在名称“UpdateStatus”。

与2中相同的问题。基类中没有UpdateStatus。

我也认为,从多个类派生这个问题就像java一样,c#不支持多重继承。

答案 1 :(得分:0)

您的代码中的其他位置还有另一个名为FrontEnd.Enrollment的类。这将来自Capture之外的其他东西。这导致错误1。

因为编译器无法判断正确的基类是什么,所以无法解析该类的任何成员。这导致错误2& 3

所以纠正多个基类的问题,你会没事的。

答案 2 :(得分:0)

我很确定像JAVA一样,C#中也不允许多重继承。对于Capture类,您将继承两个类。

public partial class Capture : Window, DPFP.Capture.EventHandler

可以解决这个问题。您可以使用多级继承。这将解决问题。