我有两个具有某些通用功能的功能(即与服务建立连接并在调用后关闭连接)。我在其中创建了一个带有Func参数的名为“ InvokeService”的方法。如何在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
}
如果有任何歧义或无法理解的地方,请随时问我。
答案 0 :(得分:0)
您可能要使用template method模式:
定义操作中算法的框架,将某些步骤推迟到子类。模板方法使子类可以重新定义算法的某些步骤,而无需更改算法的结构。
在您的情况下,您可以使用以下内容:
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
}
}
如果要为每个具体类返回不同的内容或根据具体类返回不同的参数,则可以使用泛型来实现。让我知道是否是这种情况。
答案 1 :(得分:0)
可以通过反射来解决; request.GetMethodInfo()