繁体   English   中英

C#通用try catch方法转换

[英]C# generic try catch method conversion

我正在使用具有超时异常的多个服务的代码库。

我的想法是创建一个将服务方法作为参数并返回方法调用的通用方法。

我的问题是,当我调用此方法并传递返回int列表的方法时,出现错误,因为它无法从system.collections.generic.list...转换为system.func.system.collections.generic.list...

我发现了一个试图进行相应转换的帖子,但我不想转换。 我只需要字符串列表,而不是需要给我字符串列表的函数。 我不太确定从这里去哪里?

private U HandleTimeoutException<U>(Func<U> fn)
{
  U result = default(U);

  try
  {
      result = fn();
  }
  catch (TimeoutException)
  {
      //some code that handles the exception
  };
  return result;
}

编辑:

我的方法调用是:

HandleTimeoutException<List<id>>(getListofIds(fName,lName,regionId));

我认为c#不会让我将方法签名作为参数传递,因为签名本身具有3个参数,或者因为它评估该方法并认为它正在获取ID的列表作为参数。 无论如何,我可以使用委托来调用getListofIds(X,Y,Z)并将该委托传递给我的常规try / catch函数吗?

感谢您的任何建议!

您要做的不是将函数传递给HandleTimeoutException ,而是传递getListofIds方法的结果。

这将解决它:

HandleTimeoutException(() => getListofIds(fName, lName, regionId));

注意:您甚至不必指定模板参数类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM