AutofacScanningAssemblyforSpecificClassTypes我开始使用Autofac,想扫描一些DLL,让Autofac注册其中一些类。我感兴趣的类都继承自PluginBase类,但下面的代码似乎没有注册它们。有人可以帮忙吗?varassemblies=AppDomain.CurrentDomain.GetAssemblies();varbuilder=newContainerBuilder();builder.RegisterAssemblyTypes(assemblies).Where(t=>t.BaseType==typeof(PluginBase)).AsImplementedInterfaces().AsSelf();varcontainer=builder.Build();varpluginClasses=container.Resolve();//pluginClasses为空!!!!我认为你需要在注册时指定插件的基类。调用AsImplementedInterfaces以使用它实现的接口而不是基类型来注册一个类型。您应该更新注册以将插件注册为PluginBase。这是代码:varassemblies=AppDomain.CurrentDomain.GetAssemblies();varbuilder=newContainerBuilder();builder.RegisterAssemblyTypes(组件).Where(t=>t.BaseType==typeof(PluginBase)).As();varcontainer=builder.Build();varpluginClasses=container.Resolve>();也许就是这样:builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies()).Where(t=>t.GetInterfaces().Any(i=>i.IsAssignableFrom(typeof(IDependency)))).AsImplementedInterfaces()。InstancePerDependency();在此代码中,我使用IDependency作为标记接口。您可以将其替换为PluginBase类并删除Where方法。关键是使用IsAssignableFrom方法。以上就是C#学习教程:Autofac针对特定类类型扫描程序集分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处: