【发布时间】:2012-02-21 10:06:53
【问题描述】:
我有 5 个数据函数,它们都返回相同类型的对象 (List<source>)
现在我必须将它们发布到 WCF 中,在其中我必须用各种错误处理代码(大约 50 行)包围被调用的代码。
所以我想:因为代码(51 行)除了获取数据的一行之外都是相同的,因此只需创建一个函数,其中包含所有错误处理并传递函数以获取数据作为该函数的参数。
所以我有这些功能:
GetAllSources() : List<Source>
GetAllSourcesByTaskId(int taskId) : List<Source>
GetAllSourcesByTaskIdPersonId(int taskId, int personId) : List<Source>
GetAllSourcesByDate(DateTime startDate, DateTime endDate): List<Source>
我希望能够将它们作为参数传递给函数。
我应该如何声明被调用的函数?
ps 我读过这个 how to pass any method as a parameter for another function 但它使用一个不能返回任何东西的 Action 对象(据我所知),我想返回一个 List
【问题讨论】:
-
使用
Func代替Action。 -
给定的函数都有不同的参数,你打算如何提供正确的参数?
-
@Roger 我试过了,但我无法让它工作。在我看来,一个函数只有一个签名(如果我错了,请纠正我)所以当我为
GetAllSources()声明一个函数时,我无法通过GetAllSourcesByTaskId(int taskId)? -
@GregL:我不知道,但我想我可以这样做:
List<Source> = GetDataFromGenericErrorHhandlingFunction(Dataservice.GetAllSourcesByTaskId(6)); -
@Michel 您的示例只是调用
Dataservice.GetAllSourcesByTaskId()函数并将返回值传递给GetDataFromGenericErrorHhandlingFunction()方法。那是容易的事。我错过了什么吗?
标签: c#