转换类可扩展性(扩展方法与部分类)

时间:2009-07-22 17:41:37

标签: c# extension-methods partial-classes

我正在为频率创建转换类,我希望我的团队能够在需要时添加其他转化。

Frequency myFrequency = new Frequency(100, MHz);
double value = myFrequency.InKhz();

该类的源代码将不会包含在将来的项目中,因此我要么必须将该类作为部分类,要么其他转换需要是扩展。一个例子是将转换添加到GHz

myFrequency.InGHz()

这是继续进行此操作的最佳方式?

更新:在阅读了Randolpho的回答后,我将采用扩展方法方法。随着时间的推移,扩展将进入基本代码,但我不想让其他团队成员等待更新的程序集,这使他们能够更快地继续下一个任务。

3 个答案:

答案 0 :(得分:3)

除非您拥有原始来源,否则部分课程将无效。如果您拒绝开发人员访问该源,则他们唯一的选择是使用扩展方法。

那就是说,你可能只想要一个进程来更新库中的新增内容;它看起来很罕见。

答案 1 :(得分:1)

一路扩展方法。它不会限制你,部分方法只能在程序集中使用,而扩展方法可以在任何地方声明。

答案 2 :(得分:0)

如果您希望在不编译的情况下进行扩展,则可能需要创建单独的转换类。这将允许您在运行时指定转换并将它们存储在某种形式的字典中,但不幸的是,它不会像您输入的那样具有相同的“内置”语言感觉。

否则,扩展方法可能是您的最佳选择 - 但是只要您想添加新的转换,它们就需要重新编译+新库。