Как получить все ссылки проекта .net8.0 в виде массива в Startup.csC#

Место общения программистов C#
Ответить
Anonymous
 Как получить все ссылки проекта .net8.0 в виде массива в Startup.cs

Сообщение Anonymous »

У меня есть серверный проект ASP.NET, который включает в себя несколько небольших проектов библиотеки классов в качестве ссылок.

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



net8.0
enable
enable
Linux
..\docker-compose.dcproj















Я планирую зарегистрировать все службы, определенные в этих библиотеках классов, с помощью сборки в методе ConfigurationServices.

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

public static void ConfigureServices(this IServiceCollection services)
{
// TODO: Get all project references as an array to optimize below code.
var serviceTypes = Assembly.GetExecutingAssembly().GetTypes();
var idTypes = Assembly.Load("Identity").GetTypes();
var txTypes = Assembly.Load("Transaction").GetTypes();
serviceTypes = serviceTypes.Concat(idTypes).Concat(txTypes).ToArray()
.Where(t => typeof(IService).IsAssignableFrom(t) && !t.IsInterface && !t.IsAbstract)
.ToArray();
foreach (var serviceType in serviceTypes)
{
var interfaceType = serviceType.GetInterfaces()
.FirstOrDefault(i => typeof(IService).IsAssignableFrom(i));

if (interfaceType != null)
{
services.AddScoped(interfaceType, serviceType);
}
}
}
Вот несколько примеров сервисов, с которыми я работаю.

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

// Common library
public interface IService
{
}

// Identity library
public interface IUserService : IService {

}

public class UserService : IUserService {

}

// Transaction library
public interface ITransactionService : IService {

}

public class TransactionService : ITransactionService {

}
Можно ли получить все проекты библиотек, на которые имеются ссылки, в виде массива в методе ConfigurationServices запуска?

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

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

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

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

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

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