基本クラスを継承するときに「タイプ 'MyType' のコンストラクタが見つかりません」というエラーを回避する方法 質問する

基本クラスを継承するときに「タイプ 'MyType' のコンストラクタが見つかりません」というエラーを回避する方法 質問する

他のクラスが継承する Form 基本クラスを含む Visual Studio 2010 Windows Forms アプリがあります。基本クラスのコンストラクターは、子クラスが基本クラスに渡すパラメーターを受け取ります。

例:

public partial class BaseForm : Form
{
    public BaseForm(int number)
    {
        InitializeComponent();
    }
}

public partial class ChildForm : BaseForm
{
    public ChildForm(int number)
        : base(number)
    {
        InitializeComponent();
    }
}

私が遭遇している問題は、VisualStudio のデザイン ビュー モードで ChildForm を開こうとすると、次のエラーが表示されることです。

'MyProject.BaseForm' 型のコンストラクターが見つかりません。

注: エラーに関係なく、プロジェクトはコンパイルされ、正常に実行されます。

パラメータを含まないコンストラクタでコンストラクタをオーバーロードすると、エラーを回避できます。

例: (これによりエラーが解消されます)

public partial class BaseForm : Form
{
    public BaseForm(int number)
    {
        InitializeComponent();
    }

    public BaseForm()
    {
        InitializeComponent();
    }
}

public partial class ChildForm : BaseForm
{
    public ChildForm(int number)
        : base(number)
    {
        InitializeComponent();
    }
}

私の質問は、パラメーターなしのコンストラクターを含まない基本クラスを作成し、デザイン ビュー エラーを回避するにはどうすればよいかということです。

ベストアンサー1

それは全く不可能だ。

デザイン ビューに表示されるフォームは、基本クラスの実際のインスタンスです。
既定のコンストラクターがない場合、デザイナーはそのインスタンスを作成できません。

コンストラクターを でマークし[Obsolete("Designer only", true)]、デザイナー以外で呼び出された場合に例外をスローするようにして、他の人が呼び出さないようにすることができます。

おすすめ記事