Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 36608|Respuesta: 1

[.NET Core] ASP.NET Core (iii) Crear dinámicamente instancias usando ActivatorUtilities

[Copiar enlace]
Publicado en 1/12/2020 13:50:31 | | | |
Revisión:

ASP.NET Core (1) utiliza caché Redis
https://www.itsvse.com/thread-9393-1-1.html

ASP.NET Núcleo (2) Reiniciar la aplicación por código
https://www.itsvse.com/thread-9480-1-1.html

Normalmente, un objeto instanciado es una instanciación de una clase con la nueva palabra clave

C# crea dinámicamente una instancia de una clase en la fábrica de clases usando los siguientes métodos:


Activator.CreateInstance (Tipo)
Activator.CreateInstance (Tipo, Objeto[])


Primero, definimos una interfaz ITest de la siguiente manera:

Definamos dos clases de implementación, a saber: TestA y TestB, y el código es el siguiente:

donde TestB tiene un constructor no vacío

El método GetUserName en la clase TestB necesita leer el archivo de configuración a través de IConfiguration y luego unirlo con los parámetros entrantes para devolver el valor de retorno.

El archivo de configuración es el siguiente:



Creamos objetos cargando dinámicamente la DLL, creándolos por reflexión e instanciandolos a través de Activator y ActivatorUtilities respectivamente, con el siguiente código:

Resultados de los resultados:

ret
"Hola itsvse.com"
Por ejemplo. Mensaje
"No se define ningún constructor sin parámetros para el tipo 'ClassLibrary1.TestB'."

ret
"Hola itsvse.com"
ret
"Aaaa itsvse.com"

Al usar Activator para crear un objeto TestB, se reporta un error:No se define ningún constructor sin parámetros para el tipo 'ClassLibrary1.TestB'.

Crear TestA y TestB a través de ActivatorUtilities no reportará un error, y el método puede ejecutarse normalmente, como se muestra a continuación:




No hay problema en usar Activator para instanciar objetos en el framework .NET, pero en asp.net núcleo se introducen los conceptos de IOC y DI, y muchos objetos no son constructores sin parámetros y deben pasarse en la clase de implementación correspondiente.

Donde _services variables estáticas se definen de la siguiente manera:

CreateInstance(IServiceProvider, Type, Object[])
parámetro

Proveedor
IServiceProvider
Proveedor de servicios para resolver dependencias

TypeinstanceType
Tipo
El tipo a activar

Parámetros
Objeto[]
Parámetros del constructor que no son proporcionados por el proveedor


Referencia:El inicio de sesión del hipervínculo es visible.

(Fin)




Anterior:Análisis de seguridad OAuth 2.0 para móviles y escritorios y mecanismo de verificador de códigos
Próximo:Usa JSC para generar una dll en JavaScript para llamadas a C#
Publicado en 22/9/2021 20:31:33 |
Aprende a aprender...
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com