不扩展构造函数类

本文关键字:构造函数 扩展 | 更新日期: 2023-09-27 17:48:48

在C#中,是否可以扩展一个没有构造函数的类?

也许我想错了,只需要踢一下胯部。我有一个Silverlight类,它扩展了System.Windows.Media.Transform。随着Silverlight 2的正式发布,Transform现在没有构造函数。所以,当我编译我的类时,我得到一个错误,说"类型"。。。转换"未定义构造函数

是否还有可能以一种有用的方式扩展这个类?如果不是,我会画很多悲伤的脸。

不扩展构造函数类

Transform的唯一构造函数是内部的,因此您不能自己从中派生。

隐藏所有公共构造函数是一种用于防止子类化并迫使开发人员按预期使用该类的技术。可能是实现者希望您在扩展时使用适配器或Facade,甚至是代理。

构造函数中可能存在重要的生命周期细节,需要按照最初实现者的意图使用,也可能是开发人员的疏忽。

我看到过转换到工厂模式的尝试,在工厂模式中,这是以防止子类化的方式完成的。也就是说,没有提供给子类的受保护构造函数。有时,高级对象模式可能会使语言的内置功能变得紧张。

有些类不可能没有构造函数。每个班级至少有一个AFAIK。如果您不编写它,C#编译器将为您插入一个默认(无参数)构造函数。

只要它没有密封,你就应该能够扩展它。