Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 注册表中的类型未解析_C#_Autofac - Fatal编程技术网

C# 注册表中的类型未解析

C# 注册表中的类型未解析,c#,autofac,C#,Autofac,我有以下注册: builder.RegisterAssemblyTypes(AssemblyUtils.GetAllAssemblies()) .Where(t => typeof(IReadModelService).IsAssignableFrom(t) || typeof(IDatabaseRepository).IsAssignableFrom(t)) .AsImplementedInterfaces() .InstancePerDependency() .Properti

我有以下注册:

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>();

这两种类型都已解析。

我看不到此类型的注册
DeviceAdModelService:IDeviceReadModelService

builder.RegisterType<DeviceReadModelService>().As<IDeviceRea‌​dModelService>()
也许这样会更好

var assembly =  Assembly.GetExecutingAssembly();// or your target Assembly
builder.RegisterAssemblyTypes(assembly)
     .Where(t => t.Name.EndsWith("Repository") || t.Name.EndsWith("Service"))
     .AsImplementedInterfaces().InstancePerDependency()
     .PropertiesAutowired();

如果删除自动注册,手动注册是否有效?例如,
builder.RegisterType().As()
@win如果我进行手动注册,它确实可以工作。。。无法真正理解泛型代码的问题是什么,因为我仍然可以看到注册的类型。该类型实现了IReadModelService接口。使用我的原始代码,两个注册都在那里,如果它有一个接受ReadModelsSetting的构造函数,并且该构造函数也已注册,那么它就无法旋转DeviceAdModelService,但是使用一个空构造函数,它可以在您注册IDEVICEREADModelService的地方工作。我刚刚告诉您,使用我的原始代码,所有内容都会注册,问题是对象之间的依赖关系无法解决。这个问题在某种程度上与生命周期范围有关
builder.RegisterType<DeviceReadModelService>().As<IDeviceRea‌​dModelService>()
public interface IReadModelsSettings { }
public class ReadModelsSettings : IReadModelsSettings { }
builder.Register<ReadModelsSettings>((c) => { return JsonConvert.DeserializeObject(File.ReadAllText(configFilePath), typeof(ReadModelsSettings)) }).As<IReadModelsSettings>().SingleInstance();
builder.RegisterAssemblyTypes(AssemblyUtils.GetAllAssemblies())
.Where(t => typeof(IReadModelService).IsAssignableFrom(t) ||
typeof(IDatabaseRepository).IsAssignableFrom(t))
.AsImplementedInterfaces()
.InstancePerDependency()
.PropertiesAutowired();
var assembly =  Assembly.GetExecutingAssembly();// or your target Assembly
builder.RegisterAssemblyTypes(assembly)
     .Where(t => t.Name.EndsWith("Repository") || t.Name.EndsWith("Service"))
     .AsImplementedInterfaces().InstancePerDependency()
     .PropertiesAutowired();