有什么方法可以创建可能具有不同的调用和返回参数对象的方法?

时间:2019-01-11 09:15:48

标签: c#

我正在使用这种类型的代码:

lock (l)
{
   try
   {
      var data = db2.Query<CardSetWithWordCount>(qry);
      return data;
   }
   catch (Exception ex)
   {
      db2.Rollback();
      Debug.WriteLine(ex);
      Console.WriteLine(qry);
      throw;
   }
}

或其他类似示例:

lock (l)
{
   try
   {
      var data = db2.Query<CardSetDetails>(qry);
      return data;
   }
   catch (Exception ex)
   {
      db2.Rollback();
      Debug.WriteLine(ex);
      Console.WriteLine(qry);
      throw;
   }
}

除了返回类型为db2.Query的不同对象外,代码完全相同。

由于要花很多行,我想用一个我调用并传入返回对象和try字符串的方法替换这两个块。但是我不确定从哪里开始,因为在这种情况下返回的对象是

  <CardSetWithWordCount>
对于我要替换的每种方法,

可以不同(例如)。

这是我可以在方法中执行此操作的方式,如果可以,我将如何声明参数?

2 个答案:

答案 0 :(得分:4)

您可以使用如下通用名称:

T RunQuery<T>(YourDB db, string qry)
{

   lock (l)
   {
       try
       {
           T data = db.Query<T>(qry);
           return data;
       }
       catch (Exception ex)
       {
          db.Rollback();
          Debug.WriteLine(ex);
          Console.WriteLine(qry);
          throw;
       }
    }
 }

这样称呼它:

YourType res=RunQuery<YourType>(db2,qry);

请寻求更多信息: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/

答案 1 :(得分:0)

传入Type参数作为函数参数,然后进行db2.Query传入类型。