0

我有最奇怪的问题。为了快速测试实例化我的角色提供者,我运行以下修改后的操作方法:

public ActionResult Login()
{
    Educ8RoleProvider p = new Educ8RoleProvider();
    var model = new LoginModel();
    return View(model);
}

角色提供者或多或少看起来像这样:

public class Educ8RoleProvider : RoleProvider, IDisposable
{
    private readonly IMemberRoleRepository _memberRoleRepository = new MemberRoleRepository();

    public Educ8RoleProvider()
    {
    }
}

中的代码Login执行没有任何异常,但是当我在 line 上放置一个断点时var model = new LoginModel();,变量p已经消失了。p尝试在即时窗口中检查它时,尝试放置快速手表时遇到相同的错误:

The name 'p' does not exist in the current context

今天早上我从 VS11 Beta 顶级 VS2012 RC 升级。我不知道这是否可能是由于某处的新设置或其他原因。

补充:我发现我不知何故偏离了我的调试配置到一个基于版本的配置。

4

2 回答 2

0

我的猜测是它已经被优化掉了——毕竟,你没有它用于任何事情。

我希望它在调试版本上没问题,但在优化版本上已经不行了。(当然,仍应调用构造函数。)

如果你不打算使用它,我怀疑你是否应该拥有它,请注意 - 这至少是一种代码味道。

如果这真的是为了“实例化 [你的] 角色提供者的快速测试”,我可以推荐单元测试吗?:)

于 2012-06-28T18:19:29.770 回答
0

奇怪的。唯一想到的是,也许 VS2012 上次引用变量时会将变量从范围中剔除。您是否尝试过插入一条线以访问 p 并查看它是否可以让您观看它?

于 2012-06-28T18:20:40.233 回答