【发布时间】:2019-11-19 13:38:12
【问题描述】:
我有两个具有一些共同功能的功能(即与服务建立连接并在调用后关闭连接)。我创建了一个名为“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
}
如果有任何不明确或无法理解的地方,请随时问我。
【问题讨论】:
-
不清楚你的问题到底是什么。您的帖子中没有问号。
-
太好了!你有什么问题?
-
我想你要找的是Code Review。
-
您可能需要像
InvokeService<T>(Func<T> request)一样声明它,以便InvokeService了解T,但除此之外,是的...您的问题是什么? -
顺便说一句。
Func<...>的通用参数列表的最后一项确定返回类型。所以Func<T>返回T。这基本上就是像public T doStuff() { ... }这样的“正常”方法的样子。Func<T1, T2>会期望一个参数T1并且会返回一个T2;类似于public T2 doStuff(T1 t1) { ... }。对于void返回,您可能需要使用Action<...>。 -- 或者你说的“我这里需要一个Method2请求的完整对象及其参数”到底是什么意思?
标签: c# .net function delegates generic-programming