Новый AutoCAD 2025 поставляется с .NET 8, который по сути представляет собой .NET Core, поэтому я предполагаю, что внедрение зависимостей не составит труда и для надстроек autocad, но...
Я не нашел ни слова об этом во всем Интернете, но это должен быть очень простой способ обработки зависимостей, если они работают с .NET 8. Есть ли хотя бы небольшой пример того, как регистрировать службы, настраивать некоторые параметры и построить сервисный контейнер для надстройки AutoCAD и использовать его где-нибудь еще, например, в командном методе? Блоги Autodesk об этом молчат. Мне нужно использовать ранее написанные сервисы, которые я использую для основных проектов веб-API ASP.NET, для работы с API-интерфейсами Forge внутри плагина автоматизации проектирования AutoCAD.
Я попытался использовать HostBuilder и зарегистрировать одну службу foo, но он даже не загрузил плагин, никаких ошибок.
Пожалуйста, покажите мне эту встроенную поддержку в ядре .net - мне очень интересно. Я знаю пакеты Microsoft.Extensions.DependencyInjection
nuget, но они не являются встроенной поддержкой и были созданы на основе IServiceProvider
, известного из .Net Framework v1.0. Вот объяснение того, что такое Внедрение зависимостей.
поэтому я предполагаю, что внедрение зависимостей должно быть несложным и для надстроек autocad.
Трудно понять, что вы имеете в виду. Определенно можно использовать такой код в надстройке:
var services = new ServiceCollection();
services.AddSingleton<IMyService, MyService>();
var sp = services.BuildServiceProvider();
sp.GetRequiredService<IMyService>();
Что именно вы ищете?
Это действительно то, что я ищу, но я также ищу какой-то сборщик хостов, где я мог бы поместить все в класс запуска, чтобы иметь возможность вызывать методы UseXXX (Serilog) и т. д. Таким образом, я предполагаю, что помещу поставщика услуг как статическую переменную. в классе приложения и каждый раз получать через него услуги.
Хорошо, тогда напишите метод расширения, который это сделает
Я не понимаю связи с HostBuilder. Вы можете использовать DI независимо от HostBuilder. Что заставляет вас идти по пути HostBuilder?
Ничего особенного, я вообще-то пробовал без него, но пока не получилось, потому что я не мог использовать способ его регистрации через hostbuilder.userserilog, вот и все. Аналогичным образом мне нужно добавить конфигурацию appsettings.json, чтобы иметь возможность запускать общие службы, использующие Microsoft ILogger и IConfiguration, в проектах веб-API.
Внедрение зависимостей — это когда вы внедряете любую зависимость. Период. Он не привязан к какой-либо структуре или специальному языку. Так что ваше предположение ни в коей мере не имеет смысла