如何确保在资源上使用 using 关键字
How to ensure using the using keyword on a resource
是否可以确保 VS 项目中使用特定方法(returns Nhibernate 会话)的每个开发人员都将强制使用 using 模式。
例如:
public static ISession GetSession()
{
ISessionFactory holder = ActiveRecordMediator.GetSessionFactoryHolder();
ISessionScope activeScope = holder.ThreadScopeInfo.GetRegisteredScope();
ISession session = null;
var key = holder.GetSessionFactory(typeof(ActiveRecordBase));
if (activeScope == null)
{
session = holder.CreateSession(typeof(ActiveRecordBase));
}
return session;
}
我要保证每一个调用这个方法的开发者都用using语句把它包围起来,否则会被Visual Studio当成错误,无法编译。 (或者可能通过一些分析托管代码的工具)。
必须仅按以下方式使用:
using (var session = Nh.GetSession())
{
//use the session
}
Is it possible to ensure that every developer in a VS project that
uses a certain method (which returns Nhibernate session) will be
enforced the using pattern?
简单的回答是否定的。
更广泛的问题是,如果用户在超出范围之前没有处置任何 Disposable 对象,是否可以警告用户。 CodeRush 和 FxCop 在这方面提供了某种警告。
即使使用最新的 resharper 版本,我也没有看到开箱即用的警告。 Here and here 一些关于 resharper 的讨论。
是否可以确保 VS 项目中使用特定方法(returns Nhibernate 会话)的每个开发人员都将强制使用 using 模式。 例如:
public static ISession GetSession()
{
ISessionFactory holder = ActiveRecordMediator.GetSessionFactoryHolder();
ISessionScope activeScope = holder.ThreadScopeInfo.GetRegisteredScope();
ISession session = null;
var key = holder.GetSessionFactory(typeof(ActiveRecordBase));
if (activeScope == null)
{
session = holder.CreateSession(typeof(ActiveRecordBase));
}
return session;
}
我要保证每一个调用这个方法的开发者都用using语句把它包围起来,否则会被Visual Studio当成错误,无法编译。 (或者可能通过一些分析托管代码的工具)。
必须仅按以下方式使用:
using (var session = Nh.GetSession())
{
//use the session
}
Is it possible to ensure that every developer in a VS project that uses a certain method (which returns Nhibernate session) will be enforced the using pattern?
简单的回答是否定的。
更广泛的问题是,如果用户在超出范围之前没有处置任何 Disposable 对象,是否可以警告用户。 CodeRush 和 FxCop 在这方面提供了某种警告。
即使使用最新的 resharper 版本,我也没有看到开箱即用的警告。 Here and here 一些关于 resharper 的讨论。