【问题标题】:Unable to step into interface implementation configured by unity application block无法进入统一应用程序块配置的接口实现
【发布时间】:2012-06-24 17:10:56
【问题描述】:

我已经用 EntLib 配置了一组接口实现。统一块。一旦我运行应用程序,实现类的构造函数就可以正常工作: 1.实现的接口

当我运行应用程序时,cctor 运行良好,这表明统一解析成功:

但是当我尝试调用这个类的方法时,代码只是通过而没有实际调用实现类的函数:

编辑:2012 年 6 月 11 日添加 以下是我拥有的 Unity 配置。 (这就是我正在做的所有统一配置)

 public class UnityControllerFactory : DefaultControllerFactory
{
    private static readonly IUnityContainer container;
    private static UnityControllerFactory factory = null;

    static UnityControllerFactory()
    {
        container = new UnityContainer();
        UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
        section.Configure(container);
        factory = new UnityControllerFactory();
    }

    public static UnityControllerFactory GetControllerFactory()
    {
        return factory;
    }

    protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
    {
        return container.Resolve(controllerType) as IController;
    }
}

我无法进入这段代码,实现只是跳过而不执行任何操作。这里有什么问题?

【问题讨论】:

  • 如果代码完全被跳过,这可能表明您需要刷新 dll。尝试清理您的解决方案文件并重建它。如果不是这样,调试时使用F11而不是F10
  • 我已经尝试清理解决方案并使用 F11
  • 当调试器在断点处停止时,右键单击该行并选择“step into specific”,然后选择您要单步执行的方法。
  • @KyleTrauberman:但是如何让代码正常运行呢?这可能发生的任何特殊原因?我可以在某处查看任何痕迹吗?

标签: c# model-view-controller dependency-injection unity-container enterprise-library


【解决方案1】:

当调试器在断点处停止时,右键单击该行并选择“单步执行”,然后选择您要单步执行的方法。

这个类/方法是否在另一个程序集中(不是另一个项目)?可能没有加载这个类的源代码(或者调试符号没有正确刷新,如果是这种情况,重新启动 VS 可能会修复它。),所以调试器跳过它。该方法也可能用DebuggerStepThroughAttribute 修饰,这会导致调试器跳过它。

【讨论】:

  • 感谢您的评论。当我尝试单步执行特定代码时,在我可以单步执行的代码块列表中找不到接口实现,它只显示了我实现的接口方法。这里有什么问题?
【解决方案2】:

实际的问题在于 yield 语句,它在解析结果之前不会进入代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-23
    • 2019-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    相关资源
    最近更新 更多