Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从抽象用户控件继承用户控件(而不让设计器搞砸)?_C#_Wpf_Abstract_User Controls_Inheritance - Fatal编程技术网

C# 如何从抽象用户控件继承用户控件(而不让设计器搞砸)?

C# 如何从抽象用户控件继承用户控件(而不让设计器搞砸)?,c#,wpf,abstract,user-controls,inheritance,C#,Wpf,Abstract,User Controls,Inheritance,我有一个控件(mySubControl),它继承了一个抽象的UserControl(myAbstractControl)。 现在在mySubControl的设计器中,总是有一个错误:无法创建myAbstractControl的实例 我认为VS2010设计器正在尝试使用myAbstractControl的构造函数 我怎样才能防止他犯错误呢 这整件事似乎有点令人毛骨悚然 让我看看。我有一个抽象基类 [TypeDescriptionProvider(typeof(ConcreteControlProv

我有一个控件(mySubControl),它继承了一个抽象的UserControl(myAbstractControl)。 现在在mySubControl的设计器中,总是有一个错误:无法创建myAbstractControl的实例

我认为VS2010设计器正在尝试使用myAbstractControl的构造函数

我怎样才能防止他犯错误呢

这整件事似乎有点令人毛骨悚然

让我看看。我有一个抽象基类

[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*/}
现在,当有一个继承类(由邪恶的同事编写)时

它需要自己的构造函数,并且不使用我非常重要的SuperVar处理方法

public ConcreteControl(SomeOtherVar notMyVar)
{
    // Do some useless things here
}
所以现在有两个问题。但我仍然不知道为什么我的设计器会搞砸,而且我的抽象类construtor、vars和方法也会被忽略

我已经尝试使用TypeDescriptionProviders(覆盖GetReflectionType和CreateInstance),如链接条目中所述,这没有什么区别


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

请参阅Well nice,它链接到另一个页面,但这个页面似乎不完整。您的继承器中是否定义了具有相同签名的构造函数?我在另一个问题中有一个通用解决方案。请参阅Well nice,它链接到另一个页面,但这个页面似乎不完整。您的继承者中是否定义了具有相同签名的构造函数?对于另一个问题,我有一个通用的解决方案。
public ConcreteControl(SomeOtherVar notMyVar)
{
    // Do some useless things here
}