我正在使用这种类型的代码:
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>
对于我要替换的每种方法,可以不同(例如)。
这是我可以在方法中执行此操作的方式,如果可以,我将如何声明参数?
答案 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
传入类型。