8

我有一个自定义模块 Module1。在这个模块中,我引用了另一个自定义模块 Module2。上周一切正常。

今天早上我重新安装了 Orchard。从那时起,我一直收到此错误。

无法使用可用的服务和参数调用类型为“Module1”的“Orchard.Environment.AutofacUtil.DynamicProxy2.ConstructorFinderWrapper”的构造函数:无法解析构造函数“Void .ctor(...)”的参数“Module2” .

知道如何解决此错误吗?

谢谢。

4

5 回答 5

4

这意味着找不到某个接口的实现。可能发生了几件事:模块可能无法编译,或者您忘记了从 IDependency 派生接口。

于 2012-05-29T23:51:45.313 回答
3

如果您手动启用了模块,您可能会收到此错误。

如果是这样,请通过删除 App_Data\cache.dat 来修复它,然后回收应用程序池。

于 2014-05-11T21:54:20.247 回答
3

我知道这篇文章现在已经很老了,但只是为了链接可能导致所描述问题的任何可能的错误......这是我的错误。

我只是忘记从仪表板启用引用的模块。当然,这并没有阻止我添加项目引用和模块依赖项,让代码完美编译。

关键是,我引用的模块不包含任何内容类型定义。它只是一个旨在收集一些功能和常用实用程序的模块。这就是为什么我忘了启用它。

干杯。

于 2014-01-29T11:47:25.840 回答
2

我遇到过同样的问题。似乎我在构造函数中引用了具体类而不是接口。

        public OrderService(
            IRepository<Order> orderRepository,
            ProductService productService,
            ProductCategoryService productCategoryService
        )

代替

        public OrderService(
            IRepository<Order> orderRepository,
            IProductService productService,
            IProductCategoryService productCategoryService
        )
于 2013-05-16T13:34:35.727 回答
1

清单是:

  1. 接口派生自 IDependency
  2. 实现派生自接口
  3. 构造函数引用接口
  4. Build All 并检查所有引用的模块是否编译
  5. 在管理面板中启用模块

例子:



    public class myController : Controller{
        private readonly IMyService _myService;

        public myController(
            IMyService myService
        ) {
        _myService = myService;
        }
    }



    public interface IMyService : IDependency
    {
        int GetOne();
    }



    public class MyService: IMyService 
    {
        public MyService()
        { // init code }

        public int GetOne()
        { return 1; }
    }

于 2016-02-02T13:00:16.097 回答