使用抽象类的代码重用:障碍

本文关键字:障碍 抽象类 代码 | 更新日期: 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属性的接口,并在OutputAOutputB类中实现它,然后您可以传递您的参数作为接口类型

确保OutputAOutputB类的result属性在Output类中定义并为public,然后将updateResult的参数类型设置为Output(如您在问题中讨论的)

需要将Output参数强制转换为适当的类型OutputA或OutputB。如果您发布了代码,那么我就可以看到需要进行强制转换的地方。