使用抽象类的代码重用:障碍
本文关键字:障碍 抽象类 代码 | 更新日期: 2023-09-27 18:18:43
我有两个类。类A和类b都继承自一个抽象类。两个类中都有一个方法具有完全相同的代码,我试图将其移动到抽象类
类A中的方法是这样的:
public void updateResult(OutputA output)
{
var Class c = new Class C();
var result = c.process();
output.result = result;
}
类似地,该方法位于类B中,带有OutputB参数。属性结果在类A和b中很常见。
类型OutputA和OutputB都派生自一个基本类型Output。
当我将方法移动到抽象类并使用参数类型作为Output时,编译器无法识别result属性。
有什么更好的方法可以解决这个问题,使方法可以移动到一个抽象类中,并可供类a和类b使用呢?
您可以创建一个暴露result
属性的接口,并在OutputA
和OutputB
类中实现它,然后您可以传递您的参数作为接口类型
确保OutputA
和OutputB
类的result
属性在Output
类中定义并为public,然后将updateResult
的参数类型设置为Output
(如您在问题中讨论的)
需要将Output参数强制转换为适当的类型OutputA或OutputB。如果您发布了代码,那么我就可以看到需要进行强制转换的地方。