是否可以获得有关方法返回位置的运行时信息?
我的意思是,如果该方法在运行其所有代码行之后返回,或者由于某些条件而发生了较早的 return 语句。
该场景使用拦截器来创建应该存在于方法范围内的 UnitOfWork。例如,让我们考虑以下代码:
[UnitOfWork]
public void Foo()
{
// insert some values to the database, using repositories interfaces...
DoSomeChangesInTheDataBaseUsingRepositories();
var result = DoSomethingElse();
if (!result) return;
DoMoreLogicBecuseTheResultWasTrue();
}
我有一个拦截器类,它为用 [UnitOfWork] 标记的方法打开线程静态工作单元,当方法的范围结束时,它在 UoW 上运行提交并处理它。
这很好,但让我们考虑上面的场景,由于某种原因,程序员决定在方法的中间返回,并且在这种情况下,存储库所做的更改不应该被持久化。
我知道这可能表明方法设计错误,但请注意,这可能是由程序员编写的场景,我想保护我的数据库免受此类场景的影响。
另外,我不想在方法本身中添加代码来告诉我它在哪里结束。我想通过方法 info 以某种方式推断它的返回点,如果它不在其范围的末尾,拦截器将知道不提交。