C# 使用MS Unity error“该类型没有可访问的构造函数。”

C# 使用MS Unity error“该类型没有可访问的构造函数。”,c#,.net,unity-container,C#,.net,Unity Container,使用MS Unity,我得到的类型ICSService没有可访问的构造函数。运行时出错 重要注意事项 接口ICSService和实现它的类位于 两个独立的组件 在我的类实现中,我使用的是另一个来自DAL的接口,它是 又是一次卑鄙的袭击。 这是我的合同: namespace Demo.CustomTypes { public interface ICSService { void AddClass(Class objClass); } } 以下是它

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

重要注意事项

接口ICSService和实现它的类位于 两个独立的组件 在我的类实现中,我使用的是另一个来自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();
    }

    }
}
这是我的引导类型注册码:

 public static void RegisterTypes(IUnityContainer container)
    {


        container.RegisterTypes(

           AllClasses.FromAssembliesInBasePath(),

           WithMappings.FromMatchingInterface,

           WithName.TypeName,

           WithLifetime.ContainerControlled);

    }
编辑 如果我将bootstraper代码修改为下面的代码,它可以正常工作,但问题是为什么它不能在类型的自动聚集中工作。如何使其与自动类型一起工作?我不能使用下面的方法,因为这样我将不得不手动完成这些工作。请帮助如何使其与上述自动配置方式工作

 public static void RegisterTypes(IUnityContainer container)
    {

        container.RegisterType<ICSService, CSService>();
        container.RegisterType<IUnitOfWork, UnitOfWork>();    
    }

有一种方法可以自动注册依赖项。以下链接可能会帮助您实现同样的目标

我可以理解这样一个事实,即您的接口来自不同的领域,但是,我认为只要我们坚持对类和接口进行相同的命名转换,比如名称类测试和接口名称测试,我们就可以拥有正确的依赖性

我想问题出在WithName.TypeName。我假设Unity进行命名注册,但默认情况下它不会解析命名注册。