如何确保在资源上使用 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 的讨论。