我有以下登记:类型不解决
builder.RegisterAssemblyTypes(AssemblyUtils.GetAllAssemblies())
.Where(t => typeof(IReadModelService).IsAssignableFrom(t) ||
typeof(IDatabaseRepository).IsAssignableFrom(t))
.AsImplementedInterfaces()
.InstancePerDependency()
.PropertiesAutowired();
哪些寄存器以下类型:
public class DeviceReadModelService : IDeviceReadModelService
{
public DeviceReadModelService(ReadModelsSettings dd)
{ }
}
而且该位注册一个实例:
builder.RegisterInstance(JsonConvert.DeserializeObject(File.ReadAllText(configFilePath), typeof(ReadModelsSettings)))
.As<ReadModelsSettings>();
而且这是我遇到的问题。
如果我试图解决类型ReadModelsSettings它正常工作,但如果我尝试解决IDeviceReadModelService它失败,它基本上说,即使我可以在注册列表中注册ReadModelsSettings。
container.Resolve<ReadModelsSettings>(); -- works
container.Resolve<IDeviceReadModelService>(); --fails
任何想法是什么问题?
UPDATE
只是把它清除掉,但我改变DeviceReadModelService来实现:
public class DeviceReadModelService : IDeviceReadModelService
{
public DeviceReadModelService()
{ }
}
这两种类型都解决了。
是否手工登记工作,如果你删除自动登记?例如,'builder.RegisterType()。作为()' –
Win
@win如果我手动注册它确实工作...不能真正理解什么是通用代码的问题,因为我仍然可以看到已注册的类型。 – Marco