扩展方法 C# ASP.NET Core

1 c# asp.net-core-mvc .net-core

我有这个扩展方法,当我在启动类中调用它时遇到问题:

public static class ServiceExtensions
{
        public static void ConfigureMySqlContext(this IServiceCollection services, IConfiguration config)
        {
            var connectionString = config["mysqlconnection:connectionString"];
            services.AddDbContext<RepositoryContext>(o => o.UseSqlServer(connectionString));
        }
}
Run Code Online (Sandbox Code Playgroud)

在启动类中 - 我在添加 IServiceCollection (.NET Core 6) 时遇到错误

ServiceExtensions.ConfigureMySqlContext(builder.Configuration);
Run Code Online (Sandbox Code Playgroud)

Mar*_*rco 7

您以错误的方式调用此扩展程序。由于它是一个“扩展”方法,因此您需要在具体对象上调用它,它是扩展的。通过使用this关键字,您可以通过特定功能扩展您要调用此方法的类型,而无需使用自定义类型派生。

services.ConfigureMySqlContext(builder.Configuration);
Run Code Online (Sandbox Code Playgroud)

或者,如果您的代码基于 .net 6 最小模板:

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.ConfigureMySqlContext(builder.Configuration);

var app = builder.Build();
Run Code Online (Sandbox Code Playgroud)

文档:https ://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods