祝大家好!以多种类似方法避免重复代码(C#)
我在C#中有一些(可能会有几十个)非常类似的方法。它们都内置于几乎相同的图案:
ResultObjectType MethodX(...input parameters of various types...)
{
nesting preparation code here...
{
{
resultObject = ExternalClass.GetResultForMethodX(input parameters of MethodX);
}
}
nesting result processing code here ...
return resultObject;
}
重复/相同的部分:ResultObjectType,准备代码,结果处理代码。
不同部分:ExternalClass调用方法,输入参数集(输入参数数量,类型)。
重要:我不是在方法签名的控制 - 无法进行更改。
我试图避免重蹈类似代码的所有块像这样的东西:
ResultObjectType MethodX(...input parameters of various types...)
{
return UniversalMethod(
new ExternalMethodDelegate(ExternalClass.GetResultForMethodX),
input parameters of MethodX...);
}
ResultObjectType UniversalMethod (Delegate d, input parameters of various types...)
{
nesting preparation code...
{
{
resultObject =
(d as ExternalMethodDelegate)(same input parameters as above);
}
}
nesting result processing code...
return resultObject;
}
到目前为止,我只设法使它在这样的情况下,所有参数都具有相同的已知类型的工作在编码时。在尝试用泛型代表来解决这个问题之后,我开始认为这是无法实现的。即使我的代码编译时,它在运行时也不起作用。任何接受者?在此先感谢您的帮助!
您的预处理和后处理代码是否完全相同,以及他们是否在输入参数周围进行计算?所有方法的输入参数在类型和顺序上是否相同> – aqwert 2011-05-05 02:46:00