У меня есть элемент управления (mySubControl), который наследуется от UserControl (myAbstractControl), который является абстрактным.
Теперь в конструкторе mySubControl всегда есть ошибка, говорящая: не могу создать экземпляр myAbstractControl.
Я думаю, что VS2010 Designer пытается использовать конструктор myAbstractControl.
Как я могу предотвратить его появление в результате ошибки?
Все это кажется немного жутким.
Посмотрим. У меня есть абстрактный BaseClass.
[TypeDescriptionProvider(typeof(ConcreteControlProvider))]
public abstract class AbstractControl : UserControl
Имеет конструктор, содержащий код, который должен использоваться любым наследующим классом.
public AbstractControl(SuperVar myImportantSuperVar)
{
myPrivateSuperVar = myImportantSuperVar;
this.Loaded += new System.Windows.RoutedEventHandler(TreatMySuperVar);
}
Кроме того, ему нужен пустой конструктор для соответствия наследованию UserControl
public AbstractControl() {/*You won't really use me*/}
Теперь, когда есть наследующий класс (написанный злыми коллегами).
public partial class ConcreteControl: AbstractControl
Ему нужен собственный конструктор, и он не использует мой очень важный метод лечения SuperVar.
public ConcreteControl(SomeOtherVar notMyVar)
{
// Do some useless things here
}
Так что теперь есть две проблемы. Тем не менее, я не знаю, почему мой дизайнер портит, и, кроме того, мои конструктор абстрактных классов, переменные и методы игнорируются.
Я уже пытался использовать TypeDescriptionProviders (переопределяя GetReflectionType и CreateInstance), как отмечено в связанной записи, но это не имело значения.
Так как я могу решить эту проблему?