ABP vNext introdujo perfil JSON método (AddJsonFile)

perfil externo Método JSON (AddJsonFile) de ABP vNext introdujo.

ABP comprende un perfil de inyección de dependencia dinámica por JSON

 WPFAppModule clase pública: AbpModule
    {
        public override ConfigureServices void (contexto ServiceConfigurationContext)
        {
            configuración var = BuildConfiguration ();
            // configuración var = context.Services.GetConfiguration ();

            context.Services.AddFromConfigurationFile (configuration.GetSection ( "Servicios"));
   
        }
        Private static IConfigurationRoot BuildConfiguration ()
        {
            return new ConfigurationBuilder ()
                .SetBasePath (Directory.GetCurrentDirectory ())
                .AddJsonFile ( "configuration.json", opcional: true, reloadOnChange: true)
                //.AddJsonFile("autofac.json", opcional: false, reloadOnChange: true)
                .build ();
        }
    }

archivo //configuration.json

{
  // Descripción: "nombre Realización implementación de la clase clase de espacio de nombres, donde el nombre de ensamblado"
  "Servicios": {
    "Singleton": [

    ],
    "Transitoria": [
      {
        "Servicio": "WpfApp1.ISampleService, WpfApp1",
        "Aplicación": "WpfApp1.SampleService, WpfApp1"
      }
    ],
    "AddScoped": [

    ]
  }
}

 

ABP inyecta a través de perfil dinámico

https://blog.csdn.net/xhl_james/article/details/90700217

 

 


WpfApp1 espacio de nombres
{
    ServicesConfiguration public class
    {
        público IEnumerable <ServiceItem> Singleton {get; conjunto; }
        IEnumerable público <ServiceItem> transitoria {get; conjunto; }
        IEnumerable público <ServiceItem> AddScoped {get; conjunto; }
    }
    ServiceItem public class
    {
        Servicio cadena pública {get; conjunto; }
        Implementación public String {get; conjunto; }
    }
    Clase AddFromConfigurationFileExtension public static
    {
        /// <summary>
        ///通过配置文件进行注入实现.
        /// </ summary>
        /// <observaciones>
        /// Hay que señalar que la adopción del archivo de configuración para la configuración, a continuación, asegúrese de interfaz, y el correspondiente montaje
        /// typeof (AddFromConfigurationFileExtension) .Incluir ensamblaje de montaje con el directorio.
        /// Type.GetType de otro modo no sería encontrar la clase correspondiente.
        /// </ Observaciones>
        /// <param name = "Servicios"> </ param>
        /// <param name = "Configuración"> </ param>
        /// <volverá> </ Devoluciones>
        public static IServiceCollection AddFromConfigurationFile (al este de Servicios IServiceCollection,
        configuración IConfigurationSection)
        {
            servicesConfiguration var = configuration.Get <servicesConfiguration> ();
            el tipo @interface = null, Implementación = null;
            SI (servicesConfiguration.

                foreach (var-Servicio en servicesConfiguration.Singleton)
                {
                    @interface la Type.GetType = (Service.service, false);
                    Implementación del Type.GetType = (service.Implementation, false);
                    SI (@interface == null)
                        de banda nueva nueva ArgumentNullException El ($ "{} Service.service que no se encuentra el contacto por favor, con el administrador.!", nombredel (@interface));
                    SI (@interface == null)
                        de banda nueva nueva ArgumentNullException ($ "} {service.Implementation no se ha encontrado y administradores. Contacto", nombredel (Aplicación)) ;!
                    services.AddSingleton (@interface, Implementación);
                }
            }
            SI (servicesConfiguration.Transient! = Null)
            {
                foreach (var servicio en servicesConfiguration.Transient)
                {
                    // asegurar que debidamente registrados. Para evitar que la función de influencia último.
                    = La @interface Type.GetType (Service.service, false);
                    Implementación del Type.GetType = (service.Implementation, false);
                    SI (@interface == null)
                        de banda nueva nueva ArgumentNullException El ($ "} {Service.service no encontrado, por favor. y el administrador!", nombredel (@interface));
                    SI (@interface == null)
                        de banda nueva nueva ArgumentNullException ($ "} {service.Implementation no se ha encontrado el contacto por favor con el administrador", nombredel (aplicación.!) );
                    services.AddTransient (@interface, Implementación);
                }
            }
            if (! servicesConfiguration.AddScoped = null)
            {
                foreach (var servicesConfiguration.AddScoped en-servicio)
                {
                    // asegurar el registro adecuado. Para evitar que la función de influencia último.
                    = La @interface Type.GetType (Service.service, false);
                    Implementación del Type.GetType = (service.Implementation, false);
                    SI (@interface == null)
                        de banda nueva nueva ArgumentNullException El ($ "} {Service.service no encontrado, por favor. y el administrador", nombredel (@interface)) ;!
                    SI (@interface == null)
                        arrojar nueva ArgumentNullException ($ "{service.Implementation } , nombredel (Aplicación) que no se encuentra el contacto por favor, con el administrador.");
                    services.AddScoped (@interface, Implementación);
                }
            }
            Servicios de retorno;
        }
    }

}
 

Publicados 181 artículos originales · ganado elogios 35 · vistas 760 000 +

Supongo que te gusta

Origin blog.csdn.net/dacong/article/details/105150279
Recomendado
Clasificación