【发布时间】:2019-01-11 09:15:47
【问题描述】:
我正在使用这种类型的代码:
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>
对于我想替换的每种方法,可能会有所不同(例如)。
我可以在方法中执行此操作吗?如果可以,我将如何声明参数?
【问题讨论】:
-
你可以使用Generic Methods。
-
@TobiasTengler 但 OP 表示实施可能不同
-
那个代码有异味。需要围绕 DB 方法进行代码锁定是不常见的。
-
@KunalMukherjee 我认为“我的代码中的不同变化”意味着类型参数发生了变化。如果他的问题不够清楚,那不是我的错。我只是假设他最有可能追求什么。
-
对于 SQLite 调用,为数据库启用 WAL 模式然后正常使用事务还不够吗? (虽然我不想引发关于这个的全面讨论,只是让您在此处与您的问题分开研究)
标签: c#