Абстрактное наследование UserControl в конструкторе Visual Studio

abstract class CustomControl : UserControl 
{
    protected abstract int DoStuff();
}

class DetailControl : CustomControl
{
    protected override int DoStuff()
    { 
        // do stuff
        return result;
    }
}

Я сбросил DetailControl в форму. Он отображается правильно во время выполнения, но дизайнер отображает ошибку и не открывается, потому что базовый пользовательский элемент управления является абстрактным.

На данный момент я подумываю о следующем патче, который мне кажется довольно неправильным, поскольку я хочу дочерние классы должны быть вынуждены реализовать этот метод.

class CustomControl : UserControl 
{
    protected virtual int DoStuff()
    {
        throw new InvalidOperationException("This method must be overriden.");
    }
}

class DetailControl : CustomControl
{
    protected override int DoStuff()
    { 
        // do stuff
        return result;
    }
}

Кто-нибудь знает, как мне решить эту проблему?

31
задан asmo 9 August 2011 в 19:23
поделиться