传递委托作为参数时返回泛型类型的方法

时间:2010-10-21 15:02:55

标签: c# generics types func

我正在尝试“泛化”我们在系统中散布的一些代码。

我想:

  1. 返回通用类型,
  2. 传递包含要调用的方法的某种委托。
  3. 我对仿制药很陌生,所以任何帮助都会受到赞赏。

    下面是我的手指在空中(!)

    public static T ReturnSingleObject<T>(Func<string, int, T> dynamicSignature)
        {
            T returnValue;
            ServiceReference wCFService;
            try
            {
                wCFService = new BusinessServiceClient();
    
                returnValue = dynamicSignature();
    
                //returnValue = wCFService.AMETHOD(PARAM1, PARAM2);
                return returnValue;
            }
            catch (Exception)
            {
                if (wCFService != null) wCFService.Abort();
                throw;
            }
            finally
            {
                if (wCFService != null) wCFService.Close();
            }
        }
    

2 个答案:

答案 0 :(得分:2)

您的动态签名功能似乎缺少几个参数,因此您需要添加这些参数。此外,您可以将return语句移到try块的底部,并将返回值初始化为默认值:

T returnValue = default(T);
...
try
{
   ...
   returnValue = dynamicSignature(somestring, someint);
   ...
}
...

return returnValue;

答案 1 :(得分:0)

你应该查看它处理声明一般委托的链接: http://msdn.microsoft.com/en-us/library/sx2bwtw7.aspx