【问题标题】:Why isn't my method being called?为什么我的方法没有被调用?
【发布时间】:2013-11-22 18:53:39
【问题描述】:

如果这很重要,我正在安装 .NET 4.5 的 Windows 8 机器上运行针对 VS 2010 SP 1 中的 .NET 3.5 编译的 C# 项目。

我的方法如下所示:

private IEnumerable<TModel> ExecuteAndGet<TModel>(string name, IEnumerable<SqlParameter> parameters)
        where TModel : new()
{ // <-- Breakpoint 1

    // Non-trivial code so I doubt the method call is being optimized away
    // Or something if that's even possible.
}

在同一个类中以不同的方法调用ExecuteAndGet,如下所示:

this.ExecuteAndGet<object>("[dbo].[SomeStoredProcedure]", parameters); // <-- Breakpoint 2

这绝对是该方法的唯一重载。在调试模式下运行程序时,我遇到了断点 2。我只尝试了常规的“F5”和“Step INTO”,但它完全跳过了进入方法内部并且跳过了断点 1。我不知道为什么会这样。对ExecuteAndGet 的其他呼叫正在运行,我不明白为什么会有任何不同。请帮忙?

谢谢。

【问题讨论】:

  • 你能多贴一点代码吗?它可能是由您认为有效的事情引起的
  • 你确定你已经完成了构建吗?尝试对您的项目进行Cleanbuild,看看是否有帮助
  • 你有什么错误吗?

标签: c# debugging


【解决方案1】:

您实际上并没有在枚举。试试:

this.ExecuteAndGet<object>("[dbo].[SomeStoredProcedure]", parameters).ToList();

【讨论】:

    【解决方案2】:

    返回的可枚举实现为迭代器块。迭代器块中的代码在第一次被枚举之前不会真正执行,例如添加呼叫.ToArray().ToList()

    【讨论】:

      猜你喜欢
      • 2017-12-07
      • 2019-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 2021-02-13
      • 1970-01-01
      相关资源
      最近更新 更多