|
|
1
34
我正在使用它们:
|
|
|
2
14
blog entry 现在我确信它们确实有用。 例如,如果您希望现有实例类具有额外的功能,并且由于某种原因无法更改现有源。您可以创建类帮助器来添加此功能。 例子:
例子:
笔记:
|
|
|
3
6
这听起来很像C#3(和VB9)中的扩展方法。我所看到的对它们的最佳使用是对
(当然,还是随便什么)。所有这些都是可行的,因为扩展方法允许您有效地将对静态方法的调用链接在一起,这些静态方法在返回时采用相同的类型。 |
|
|
4
4
它们对于插件非常有用。例如,假设您的项目定义了特定的数据结构,并以特定的方式保存到光盘中。但是其他一些程序做了一些非常相似的事情,但是数据文件不同。但是你不想用一堆导入代码来膨胀你的EXE,因为你的很多用户都不需要使用这个功能。您可以使用插件框架并将导入程序放入一个插件中,该插件的工作方式如下:
然后定义转换器。一个警告:一个类 这不是一门课 朋友 . 只有在可以通过其公共方法和属性完全设置新的TMyClass对象的情况下,这种技术才会起作用。但如果可以,它的效果非常好。 |
|
|
5
3
我记得第一次体验你所谓的“类助手”是在学习Objective C时。Cocoa(苹果的Objective C框架)使用了所谓的“类别” 类别允许您通过添加自己的方法来扩展现有类,而无需子类化。事实上,Cocoa鼓励您尽可能避免子类化。子类化通常是有意义的,但通常可以避免使用类别。 Cocoa中使用类别的一个很好的例子是所谓的“键值代码(KVC)”和“键值观察(KVO)”
NSArray类既没有此方法的声明,也没有此方法的实现。但是,通过使用类别。您可以在任何NSArray类上调用该方法。您不需要子类NSArray来获得KVC/KVO一致性。
使用此技术可以很容易地将KVC/KVO支持添加到您自己的类中。Java接口允许您添加方法声明,但类别也允许您将实际实现添加到现有类中。 |
|
|
6
3
正如GameCat所示,Tstring是避免某些键入的一个很好的选择:
您是否需要访问注册表中的多行字符串?
|
|
7
2
我不建议使用它们,因为我阅读了以下评论:
http://davidglassborow.blogspot.com/2006/05/class-helpers-good-or-bad.html |
|
|
8
0
我见过它们用于使可用的类方法在类之间保持一致:将打开/关闭和显示/隐藏添加到给定“类型”的所有类,而不仅仅是活动的和可见的属性。 |
|
|
Michael R · 余烬:在带参数的焦点输出时对输入字段调用操作 9 年前 |