我正在使用这种类型的代码:
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 字符串的单一方法替换这两个 block 。但我不确定从哪里开始,因为在这种情况下返回的对象是:
<CardSetWithWordCount>
对于我想替换的每种方法可能不同(例如)。
我可以在方法中执行此操作吗?如果可以,我将如何声明参数?
最佳答案
你可以像这样使用泛型:
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://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/
关于c# - 有什么方法可以创建一个可能具有不同调用和返回参数对象的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54143442/