C# 初始化类作为DI的一部分

C# 初始化类作为DI的一部分,c#,asp.net-core,dependency-injection,.net-core,C#,Asp.net Core,Dependency Injection,.net Core,我正在编写一个新的ASP.NET核心应用程序,我正在使用内置的DI框架 我有一个服务,我需要运行Initaliaze方法作为DI的一部分-这在内置框架DI中可能吗 我以前使用以下代码使用Simple Injector做过类似的事情: container.RegisterInitializer<MyService>(instance => { instance.Initialize("Parameter to Initialize method"); }); conta

我正在编写一个新的ASP.NET核心应用程序,我正在使用内置的DI框架

我有一个服务,我需要运行
Initaliaze
方法作为DI的一部分-这在内置框架DI中可能吗

我以前使用以下代码使用Simple Injector做过类似的事情:

container.RegisterInitializer<MyService>(instance =>
{
    instance.Initialize("Parameter to Initialize method");
});
container.RegisterInitializer(实例=>
{
初始化(“初始化方法的参数”);
});
我正在.NET Core中注册我的大部分服务,如下所示:

public static void RegisterServiceDependencies(this IServiceCollection services)
{
    services.AddTransient<IServiceA, ServiceA>();
    services.AddTransient<IServiceB, ServiceB>();
    //etc etc
publicstaticvoidregisterservicedependencies(此IServiceCollection服务)
{
services.AddTransient();
services.AddTransient();
//等等
然而,在查看intellisense服务时,我没有看到类似于这样的东西

public static void RegisterServiceDependencies(this IServiceCollection services)
{
            services.AddTransient(sp =>
            {
                var instance = sp.GetService<MyClass>(); /* depends on your type */

                instance.Initialize("Parameter to Initialize method");
                return instance;
            });
});
publicstaticvoidregisterservicedependencies(此IServiceCollection服务)
{
services.AddTransient(sp=>
{
var instance=sp.GetService();/*取决于您的类型*/
初始化(“初始化方法的参数”);
返回实例;
});
});

我会告诉你,如果你在工厂代理中从服务提供商处获得服务,那么你就会遇到问题。在这种情况下,这可能是循环的。使用工厂代理的一般想法是正确的。你只需要澄清目标类的初始化。可以按照建议使用工厂代理艾德回答道,但可能有一些小警告需要注意。很遗憾看到你离开了:'(.有这么多简单的注入器可以为您做,而内置容器却做不到,也永远做不到。@Steven-同意-这是我头上的决定-但是为了升级到另一个巨大的.NET Framework项目,我们正在剥离Spring.NET,我已经说服团队用简单注入器替换:)