c# – 继承一个类,但它通常是用静态方法创建的?
发布时间:2020-12-15 17:20:21 所属栏目:百科 来源:网络整理
导读:我有一个我想继承的课程.即ExpenseForm应该从Spreadsheet继承.电子表格由第三方提供:我无法更改它. 但是父类实例通常使用静态方法生成: Spreadsheet myExpenses = Spreadsheet.Open(filename); (并且Spreadsheet实现了iDisposable,所以上面的语句实际上是
我有一个我想继承的课程.即ExpenseForm应该从Spreadsheet继承.电子表格由第三方提供:我无法更改它.
但是父类实例通常使用静态方法生成: Spreadsheet myExpenses = Spreadsheet.Open(filename); (并且Spreadsheet实现了iDisposable,所以上面的语句实际上是在使用部分的顶部,但我认为这不会影响到这一点.) 我想要 ExpenseForm myExpenses = ExpenseForm.Open(filename); 当然,这会失败,因为ExpenseForm.Open(继承自Spreadsheet)会返回一个Spreadsheet对象. 解决这个问题的最佳方法是什么?也许扩展方法? (我没有经验.) 我走了一个不同的方向; ExpenseForm现在有一个Spreadsheet实例. (这感觉有点麻烦,因为我必须跟踪我的一次性物体以便在我完成时进行清理.)但似乎我错过了解决原始继承问题的方法. 解决方法
那么你可以很容易地创建自己的ExpenseForm.Open方法:
public static new ExpenseForm Open(string file) { // Do whatever you need } 这是假设您可以创建一个子类,即您可以链接到适当的构造函数.你说你通常会使用Spreadsheet.Open,但是有可用的受保护或公共构造函数吗? 就个人而言,无论如何我都喜欢编写路径 – 你真的希望其他代码将ExpenseForm视为任何其他类型的电子表格吗?我通常更喜欢构图而不是继承 – 根据我的经验,它使代码更易于推理. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |