我有一个Control(mySubControl),它继承自UserControl(myAbstractControl),它是抽象的。 现在在mySubControl的Designer中,总是会出现错误:无法创建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
}
现在有两个问题。我仍然不知道为什么我的设计师搞砸了,另外我的抽象类construtor,vars和方法被忽略了。
我已经尝试使用TypeDescriptionProviders(覆盖GetReflectionType和CreateInstance),如链接条目中所述,这没有什么区别。
那么我该如何解决这个问题?