使用MS Unity出错"该类型没有可访问的构造函数.“

本文关键字:访问 构造函数 类型 Unity MS 出错 quot 使用 | 更新日期: 2023-09-27 18:06:39

使用MS Unity,我得到"类型ICSService没有可访问的构造函数。"运行时错误。

重要注意事项

  1. Interface ICSService和实现它的类两个独立组件
  2. 在我的类实现中,我使用的是IUnitOfWork另一个来自DAL的接口又是一个单独的集合。

这是我的合同:

namespace Demo.CustomTypes
{
    public interface ICSService
    {
        void AddClass(Class objClass);    
    }
}

下面是它的实现:

namespace Demo.Business
{
    public class CSService : ICSService
    {
        private IUnitOfWork unitOfWork;
        public CSService ()
        {
            this.unitOfWork = new UnitOfWork();
        }
        public CSService (IUnitOfWork _unitOfWork)
        {
            this.unitOfWork = _unitOfWork;
        }
          public void AddClass(Class objClass)
    {
        unitOfWork.ClassRepository.Insert(objClass);
        unitOfWork.Save();
    }
    }
}

这是我的bootstrap类型注册代码:

 public static void RegisterTypes(IUnityContainer container)
    {

        container.RegisterTypes(
           AllClasses.FromAssembliesInBasePath(),
           WithMappings.FromMatchingInterface,
           WithName.TypeName,
           WithLifetime.ContainerControlled);
    }

编辑如果我修改我的引导程序代码到下面的代码,它工作得很好,但问题是为什么它不是在类型的自动注册工作。我怎样才能使它与自动类型一起工作?我不能使用下面的方法,因为这样我将不得不手动做的东西。请帮助如何使用上面提到的自动配置方式使其工作。

 public static void RegisterTypes(IUnityContainer container)
    {
        container.RegisterType<ICSService, CSService>();
        container.RegisterType<IUnitOfWork, UnitOfWork>();    
    }

使用MS Unity出错"该类型没有可访问的构造函数.“

有一种方法可以自动注册依赖项。下面的链接可以帮助你达到同样的目的

  • CodePlex上
  • 博文
  • <
  • Nuget包/gh>

我可以理解你的接口来自不同领域的事实,但是,我认为只要我们坚持相同的类和接口的命名转换(如名称类测试和接口ITest的名称),我们可以有正确的依赖关系。