asp.net-core - DotNet Core 依赖注入多个项目
问题描述
我正在构建一个 Blazor WASM 应用程序。
该应用程序正在运行,但我现在希望将项目拆分为合理的自包含项目,但在解决如何实现依赖注入而不在项目之间创建循环依赖时遇到问题。
Projects:
App.Client - UI Razor Pages
App.Server - Main project, controllers, defines interfaces
App.Shared - Shared models between Client & Server
App.Data - Implements repositories, unit of work, Db Context, migrations
我遇到的问题是 App.Data 项目依赖于 App.Server 项目来实现它所需的接口,但是我不确定如何在 App.Server 的 startup.cs 文件中配置依赖项项目,因为这不能依赖于 App.Data 项目。
解决方案
启动.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Antiforgery;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Test.Models;
using Test.Models.Data;
namespace Test
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
...
services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("database"), b => b.MigrationsAssembly("Test")));
services.AddIdentity<User, Role>()
.AddEntityFrameworkStores<AppDbContext>()
.AddDefaultTokenProviders();
...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IAntiforgery antiforgery)
{
...
}
}
}
项目结构
推荐阅读
- c# - 在 C# WebAPI 中,如何配置 CORS 以允许带有凭据和 json 内容的 POST 请求?
- javascript - 使用 Ajax 脚本在控制台上获取 TypeError 错误
- java - Mongo java驱动程序说PojoCodec不支持具有泛型类型的顶级类
- tsql - 您如何确定是否使用 Lead 或 Lag 函数计算视图列,因为 MS 不会在 sys.Columns 视图中将其标记为“Iscomputed”?
- java - `javax.inject` 在 Spring Boot 中可用吗?
- python - 使用 BeautifulSoup 从网页中检索链接
- amazon-web-services - AWS S3 存储桶通过日志存储将日志记录到弹性搜索服务 (AWS)
- sql - 编写一个 SQL 查询,其中一列是另一列的子集?
- python - 如何将曲线的颜色映射到给定范围内的标量值
- nginx - NGINX 背后的詹金斯