Использование универсального типа в методе расширенияC#

Место общения программистов C#
Ответить
Anonymous
 Использование универсального типа в методе расширения

Сообщение Anonymous »

Я пишу общий метод расширения, например. AddCors() в моем проекте .net Aspire ServiceDefaults, чтобы избежать переписывания для каждой службы. Однако свойства могут отличаться от услуги к услуге. Ниже приведен мой код:

Код: Выделить всё

public static class CorsExtensions
{
/**
* appsettings.json configuration
*
* CorsPolicy:{
*      "PolicyName": "",
*      "AllowedHosts": "*",
*      "AllowedOrigins": "http://localhost:4200",
*      "AllowedHeaders": "content-type",
*      "AllowedMethods": "GET,POST,PUT,DELETE"
* }
*/
public static IServiceCollection ConfigureCors(this IServiceCollection services) where T: class
{
var configuration = services.BuildServiceProvider().GetService();
var corsPolicy = services.Configure(configuration!.GetSection("CorsPolicy"));
services.AddCors(options =>
{
options.AddPolicy(name: corsPolicy.PolicyName,
policy => policy.WithOrigins(corsPolicy.AllowedOrigins)
.AllowCredentials()
.WithHeaders(corsPolicy.AllowedHeaders)
.WithMethods(corsPolicy.AllowedMethods)
);
});
return services;
}

public static WebApplication AddCorsMiddleware(this WebApplication app)
{
app.UseCors(T.PolicyName);
return app;
}
}
и в Сервисе A я пытаюсь использовать, как показано ниже:

Код: Выделить всё

builder.Services.ConfigureCors();

public class CorsPolicy
{
public string PolicyName { get; set; }
public string AllowedHosts { get; set; }
public string AllowedMethods { get; set; }
public string AllowedHeaders { get; set; }
public string AllowedOrigins { get; set; }
}
Как уже упоминалось, свойства могут отличаться от службы к службе. Модель объявляется в проектах службы.
Как я могу написать метод расширения для динамического прочитайте свойства и настройте соответствующим образом.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ion-method
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»