我有两个函数,它们有一些共同的功能(即与服务建立连接和在调用后关闭连接(。我做了一个名为"InvokeService"的方法,里面有Func参数。如何在InvokeService中获取请求的参数?我的意思是我需要得到请求的对象值?你可以通过我下面给出的演示代码来清除:
public void Method1(){
InvokeService(()=> _service.getMathod1(request);
}
public void Method2(){
InvokeService(()=> _service.getMathod2(request);
}
public void InvokeService(Func<T> request){
//service open
//I need here a complete object of the request of Method2 and its parameters
request.Invoke();
//service close
}
如果有任何模棱两可或不可理解的事情,请随时问我。
您可能需要使用模板方法模式:
在操作中定义算法的骨架,将一些步骤推迟到子类中。模板方法允许子类在不改变算法结构的情况下重新定义算法的某些步骤。
在你的情况下,你可以有这样的东西:
public abstract class AbstractClass
{
protected abstract void PrimitiveOperation();
public void TemplateMethod()
{
// before common functionality
PrimitiveOperation();
// after common functionality
}
}
class ConcreteClassA : AbstractClass
{
protected override void PrimitiveOperation()
{
// your A logic
}
}
class ConcreteClassB : AbstractClass
{
protected override void PrimitiveOperation()
{
// your B logic
}
}
如果你想为每个具体类返回不同的东西,或者根据具体类有不同的参数,你可以用泛型来实现。如果是这样的话,请告诉我。
它可以通过使用反射来解决;要求GetMethodInfo((