c# - 无法在脚手架中向 DI 添加服务

标签 c# asp.net-core

我正在尝试从 github 存储库中的那个开始创建一个自定义脚手架:我有一个脚手架项目,它是 mvc 脚手架的修改克隆和另一个类库。因为我想在我的库中使用 [NotNull]IApplicationEnvironment,所以我必须添加对 Microsoft.Framework.CodeGenerationMicrosoft.Framework.CodeGeneration.Common< 的引用/strong> 和 Microsoft.Framework.Runtime.Interfaces 在我的库项目中。
我想在运行我的特定生成器时向 DI 添加一些元素,但我遇到了一些问题。

在脚手架模块中,服务是在 Program 类中配置的:我想在生成器启动时添加这段初始化代码,但找不到方法。

我试图在程序类中添加代码,但我遇到了另一个问题:库引用了 .CodeGeneration 模块,要添加到库中定义的服务类,我必须在 . CodeGeneration project.json ,所以我有一个循环引用,这是不支持的。

我该如何解决这个问题?

最佳答案

您似乎正在尝试定义一个新服务并将其注入(inject)到默认服务集合中,以便脚手架实现可以使用该服务。

由于服务和实现是在您的类库中定义的,因此要注入(inject)它,您必须修改 CodeGeneration 类库并添加对您的类库的引用,并且由于您的类库还实现了自定义脚手架,因此需要引用 CodeGeneration 类库!

我看到 2 个选择:

  1. 您可以将服务和实现定义移动到 CodeGeneration 类库(在您的分支中)并让您的类库引用 CodeGeneration,而不是其他方式。
  2. 将您的服务和实现保存在单独的类库中,让 CodeGeneration 引用它,在不同的类库中实现您的脚手架,并让它引用 CodeGeneration。

我们可能会选择添加支持以从脚手架框架中的其他组件添加自定义服务,但这尚未完成。上面的选择之一应该可以让你到那时为止。

如果有帮助,请告诉我!

关于c# - 无法在脚手架中向 DI 添加服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28381452/

相关文章:

c# - 如何在分布式系统中生成重复概率低的标识符?

c# - asp.net core获取当前用户的方法

asp.net-core - 检查用户是否有权访问 Controller 操作(在访问之前)

c# - 在 .NET Core 解决方案中同时拥有 API 和 MVC 项目的约定

asp.net-core - Asp.Net core 中 FormDataCollection 的替代品是什么?

c# - 如何字符串操作和解析 url

c# - 如何解决Operator '!=' cannot be applyed to operands of type 'T' and 'T'

c# - .net 4.5 框架中用于图像编辑的命名空间

c# - 64 位枚举? C#

c# - 整洁架构中单一职责的困惑