C# 使用抽象类的代码重用:障碍
我有两节课。类A和类B。它们都继承自抽象类。两个类中都有一个方法具有完全相同的代码,我正在尝试将其移动到抽象类 类中的方法如下所示:C# 使用抽象类的代码重用:障碍,c#,C#,我有两节课。类A和类B。它们都继承自抽象类。两个类中都有一个方法具有完全相同的代码,我正在尝试将其移动到抽象类 类中的方法如下所示: public void updateResult(OutputA output) { var Class c = new Class C(); var result = c.process(); output.result = result; } 类似地,该方法位于类B中,带有一个OutputB参数。属性结果在类A和B中很常见 Out
public void updateResult(OutputA output)
{
var Class c = new Class C();
var result = c.process();
output.result = result;
}
类似地,该方法位于类B中,带有一个OutputB参数。属性结果在类A和B中很常见
OutputA和OutputB两种类型都派生自基类型输出
当我将方法移动到抽象类并使用参数类型作为输出时,编译器无法识别result属性
解决此问题的更好方法是什么,以便将方法移动到抽象类,并可由类a和类B使用。您需要将输出参数强制转换为适当的类型OutputA或OutputB。如果您发布代码,那么我可以看到强制转换需要在哪里进行。确保
OutputA
和OutputB
类的result
属性在Output
类中定义并为public,然后将updateResult
的参数类型设置为Output
(正如您在问题中所讨论的).您可以创建一个公开result
属性的接口,并在OutputA
和OutputB
类中实现它,然后您可以将参数作为接口类型传递。听起来result属性不在输出基类中,所以您需要重构它!使用了抽象类作为一种泛化形式,但您需要在实现中使用显式的具体类型,请参见我的答案。