对于C#还有点新鲜,我有一个“实用程序”类,我想在多个内部项目中使用它。在一个项目中有一个庞大的(数百个属性,而不是我的......)内部对象(SpecialObj
)。其他项目无法访问此对象并将其添加到它们是非启动项,因此基本方法不知道SpecialObj
。
所以这里是摩擦:MyClass中的MyMethod(不接受这个特殊对象)和MyClassExtension(确实采用特殊对象)具有几乎完全相同的代码,除了中间的一个部分使用这个特殊对象。
public class MyClass{
public string MyMethod (string param1, Dictionary<string, string> param2){
//some code in here part 1
//some code in here part 2
}
}
public class MyClassExtension : MyClass{
public string MyMethod (string param1, Dictionary<string, string> param2, SpecialOjb param3)
{
//some code in here part 1
//something with param3, my special object
//some code in here part 2
}
}
在两种方法中保持90%相同的代码似乎......非常错误。这种情况有没有例子或标准?
答案 0 :(得分:2)
您可以将代码拆分为受保护的部分并调用它们
public class MyClassExtension : MyClass
{
public string MyMethod (string param1, Dictionary<string, string> param2, SpecialOjb param3)
{
ProtectedMyMethodPart1( ... );
// Do something with param3
ProtectedMyMethodPart2( ... );
}
}
并在继承的类
中重用它们private GameSettings gameSettings;
答案 1 :(得分:0)
我可能会做这样的事情。
public class MyClass{
public virtual string MyMethod (string param1, Dictionary<string, string> param2){
int i= MyCommonCode.MyCommonMethod();
//I do whatever I like with i here
}
}
public class MyClassExtension : MyClass{
public string MyMethod (string param1, Dictionary<string, string> param2, SpecialOjb param3)
{
int i= MyCommonCode.MyCommonMethod();
//I do whatever I like with i here
}
}
public class MyCommonCode
{
public static int MyCommonMethod()
{
return 1;
}
}