C# 如何使用vnext在类库中注册类型?
有没有办法在dnx类库中为MVC6(vnext)应用程序注册类型(即存储库)?我不想在startup类中调用AddTransient()数百次。对于n层应用程序,这似乎不是最好的方法。基本IoC vNext使用没有扫描功能/批注册C# 如何使用vnext在类库中注册类型?,c#,dependency-injection,asp.net-core-mvc,dnx,C#,Dependency Injection,Asp.net Core Mvc,Dnx,有没有办法在dnx类库中为MVC6(vnext)应用程序注册类型(即存储库)?我不想在startup类中调用AddTransient()数百次。对于n层应用程序,这似乎不是最好的方法。基本IoC vNext使用没有扫描功能/批注册 在您的情况下,您应该使用一些“大”ioc容器,如Ninject、Unity、StructureMap…基本ioc vNext use没有扫描功能/批注册 在您的情况下,您应该使用一些“大”ioc容器,如Ninject、Unity、StructureMap…您可以使用与
在您的情况下,您应该使用一些“大”ioc容器,如Ninject、Unity、StructureMap…基本ioc vNext use没有扫描功能/批注册
在您的情况下,您应该使用一些“大”ioc容器,如Ninject、Unity、StructureMap…您可以使用与框架其余部分相同的方法,即使用IServiceCollection上的扩展方法。例如,
AddMvc
,AddEntityFramework
,等等
对于“自动”注册,没有现成的东西,但我构建了一个库,它为您提供了一个[ServiceDescriptor]
属性,您可以使用该属性将接口绑定到类(或仅应用于类)
AddAssembly(…)
扩展方法只是浏览程序集以查找所有[ServiceDescriptor]
属性,并将它们添加到服务集合中
然后,要使用它,您只需执行以下操作之一:
services.AddAssembly(typeof(ExtensionClassInAssembly))
我发现这是最简单的,它还允许您删除AddAssembly方法并用其他方法替换它,而无需更改主启动类
services.AddAssembly(typeof(TypeInAssembly))
的调用
您可以使用与框架其余部分相同的方法对类库进行分类,即在
IServiceCollection
上使用扩展方法。例如,AddMvc
,AddEntityFramework
,等等
对于“自动”注册,没有现成的东西,但我构建了一个库,它为您提供了一个[ServiceDescriptor]
属性,您可以使用该属性将接口绑定到类(或仅应用于类)
AddAssembly(…)
扩展方法只是浏览程序集以查找所有[ServiceDescriptor]
属性,并将它们添加到服务集合中
然后,要使用它,您只需执行以下操作之一:
services.AddAssembly(typeof(ExtensionClassInAssembly))
我发现这是最简单的,它还允许您删除AddAssembly方法并用其他方法替换它,而无需更改主启动类
services.AddAssembly(typeof(TypeInAssembly))
的调用
你说的“在dnx类库内”是什么意思?我喜欢将接口类型与对象类型的映射移动到我的类库中,以便有一个插件环境。你说的“在dnx类库内”是什么意思?我喜欢将接口类型与对象类型的映射移动到我的类库中,以便拥有一个插件环境。我也尝试过这样做,但我未能将依赖项从ILibraryManager加载到ContainerBuilder中,因为必须在LibraryManager初始化之前构建容器,我也尝试过这样做,但是我未能将依赖项从ILibraryManager加载到ContainerBuilder中,因为必须在LibraryManager初始化之前构建容器,这是个好主意,但看起来有点粗糙D我希望重用内置服务。我在这里提供了一个不起作用的例子:好主意,但看起来有点粗糙D我希望重用内置服务。我在此提供了一个不起作用的示例: