代码之家  ›  专栏  ›  技术社区  ›  MojoFilter

扩展无构造函数类

  •  4
  • MojoFilter  · 技术社区  · 17 年前

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

    也许我想得不对,只是需要踢一下胯部。我有一个扩展System的Silverlight类。窗户。媒体。Transform,随着Silverlight 2的正式发布,Transform现在没有构造函数。所以,当我编译我的类时,我得到一个错误,说“类型”。..Transform“没有定义构造函数。”

    仍然有可能以一种有用的方式扩展这个类吗?如果没有,我会画很多悲伤的脸。

    4 回复  |  直到 17 年前
        1
  •  9
  •   Jon Skeet    17 年前

    Transform的唯一构造函数是内部的,所以你不能自己从中派生。

        2
  •  0
  •   caskey    17 年前

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

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

    我看到过转换为Factory模式的尝试,在这种模式下,转换是以防止子类化的方式完成的。也就是说,子类没有可用的受保护构造函数。有时,高级对象模式会使语言的内置功能不堪重负。

        3
  •  0
  •   pero    17 年前

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

        4
  •  0
  •   Partha Partha    17 年前

    只要它没有密封,你就应该能够延长它。