首页 > 解决方案 > 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 项目。

在此处输入图像描述

标签: asp.net-coredependency-injectionshared-librariesblazor

解决方案


启动.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)
        {
            ...
        }
    }
}

项目结构

在此处输入图像描述


推荐阅读