visual studio 设计器 不能实例化 抽象类的几种解决方案
The designer must create an instance of type '<type name>', but it can't because the type is declared as abstract
问题产生的原因:This error occurred because the base class of the object being passed to the designer is abstract, which is not allowed.
三种解决方案:
1. 使用 TypeDescriptionProvider 属性
[TypeDescriptionProvider(typeof(SubstituteBaseUserControlProvider))]
public abstract class BaseUserControl: UserControl
[TypeDescriptionProvider(
typeof
(AbstractCommunicatorProvider))]
public
abstract
partial
class
Form1 : Form
另外:我也测试了一下vs2012并不需要做上面的处理,他本身就支持抽象UI类的继承
2. 不实用 abstract 关键字
实现这些抽象方法 ( abstract method )并在方法中抛出异常
3. 使用一个中间类
假设有如下代码:
public class Form1 : BaseForm ... public abstract class BaseForm : Form
将代码改成这样的形式:
public class Form1 : MiddleClass ... public class MiddleClass : BaseForm ... public abstract class BaseForm : Form ...问题就会得到解决。
更进一步你可以在 Form1.cs用:
publicclass Form1
#if DEBUG
: MiddleClass
#else
: BaseForm
#endif
Tag: 在设计器中无法创建抽象的实例 2011-11-28 1:08 PM IS2120@CSDN
@IS2120#CNBLOGS.T2169364049[T1,L65,R1,V259]:备忘
$ € ₤ ₭ ₪ ₩ ₮ ₦ ₱ ฿ ₡ ₫ ﷼ ¥ ﷼ ₫ ₡ ฿ ₱ ₦ ₮ ₩ ₪ ₭ ₤ € $