C#通用尝试捕获方法转换



我正在为有多个服务的代码库工作。

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

我的问题是,当我调用此方法并传递返回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));

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

相关内容

  • 没有找到相关文章

最新更新