如何继承UserControl形成一个抽象的UserControl(没有设计师弄乱)?

时间:2012-01-03 14:24:19

标签: c# wpf abstract user-controls inheritance

我有一个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),如链接条目中所述,这没有什么区别。

那么我该如何解决这个问题?

0 个答案:

没有答案