使用MS Unity,我得到了#34; ICSService类型没有可访问的构造函数。 "运行时出错。
重要提示
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();
}
}
}
这是我的Bootstrappe类型注册码:
public static void RegisterTypes(IUnityContainer container)
{
container.RegisterTypes(
AllClasses.FromAssembliesInBasePath(),
WithMappings.FromMatchingInterface,
WithName.TypeName,
WithLifetime.ContainerControlled);
}
修改 如果我将我的bootstraper代码修改为下面的代码它工作正常,但问题是它为什么不在类型的automatica grestration中工作。我怎样才能使它与自动类型一起工作?我不能使用以下方法,因为这样我将不得不手动完成这些工作。请帮助如何使用上面提到的自动配置方式。
public static void RegisterTypes(IUnityContainer container)
{
container.RegisterType<ICSService, CSService>();
container.RegisterType<IUnitOfWork, UnitOfWork>();
}
答案 0 :(得分:-1)
有一种方法可以自动注册依赖项。以下链接可以帮助您实现相同的目标
我可以理解你的接口来自各个不同的领域,但我认为只要我们坚持为类和接口进行相同的命名转换(如名称类Test和接口ITest的名称),我们就可以有正确的依赖。