我有一个最奇怪的问题。为了快速测试实例化我的角色提供程序,我运行以下修改的操作方法:
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
中的代码执行时没有任何例外,但是当我在行var model = new LoginModel();
上设置断点时,变量p
已经消失。我试图在p
上放置一个快速计时遇到同样的错误,因为我试图在即时窗口中检查它:
The name 'p' does not exist in the current context
今天早上我从VS11 Beta顶级VS2012 RC升级。我不知道这可能是由于某个地方或某个地方的新设置。
ADDED:我发现我已经以某种方式将我的Debug配置偏离到基于发布的版本。
答案 0 :(得分:0)
我的猜测是它已经被优化了 - 毕竟,你不是使用来做任何事情。
我希望它在调试版本中没问题,但是对于优化版本而言。 (当然,仍然应该调用构造函数。)
我怀疑你是否应该使用它,如果你不打算使用它,请注意 - 它至少 代码味道。
如果这是“实例化[你的]角色提供者”的快速测试,我可能会推荐单元测试吗? :)
答案 1 :(得分:0)
怪异。唯一让人想到的是,VS2012可能会在上次引用变量时将变量超出范围。您是否尝试过一行来访问p,然后看看它是否允许您观看它?