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: 63994|Respuesta: 1

[Fuente] C# hereda la determinación de IsAsignableDe, IsSubclaseDe

[Copiar enlace]
Publicado en 18/11/2019 11:45:09 | | |
A veces necesitamos determinar si una clase implementa una interfaz, como cuando se usa un mecanismo de reflexión para encontrar un tipo específico.

En términos sencillos, puedes usar el método Type.IsAssignableFrom:

IsAssignableFrom indica si el tipo BarClass puede asignarse a la interfaz IFoo, por lo que la condición para que devuelva verdadero es que BarClass implemente directa o indirectamente la interfaz IFoo. También existe un método en el tipo Type, IsSubclassOf, que esSolamenteSe utiliza para juzgar las relaciones de herencia de clases, como

Indica que FooClass se hereda de BarClass.

Por supuesto, IsAssignableFrom también puede usarse para determinar la herencia.

Así que, para el siguiente código:

interfaz I { /* ... */ }
clase A : I { /* ... */ }
clase B : A { /* ... */ }
Los valores de retorno para IsSubclaseDe e IsAsignableDe son:

typeof(A).isAsignableDe(tipo(I)); falso
tipo(A).esSubclaseDe(tipo(I)); falso
  
tipoof(I).esAsignableDe(tipo(A)); Cierto
tipoof(I).esAsignableDe(tipode(B)); Cierto
tipoof(B).esSubclaseOf(tipode(I)); falso
  
typeof(A).isAsignableDe(tipo(A)); Cierto
tipo(A).esSubclase(tipo(A)); falso
  
typeof(A).isAsignableDe(tipoof(B)); Cierto
tipoof(A).esSubclase(tipo(B)); falso
  
tipoof(B).esAsignableDe(tipo(A)); falso
tipo(B).esSubclase(tipode(A)); Cierto






Anterior:Conversión de marca de tiempo del núcleo .NET (10 bits)
Próximo:Fit Core Pit: DbContextPool causa agotamiento de la conexión a la base de datos
 Propietario| Publicado en 19/3/2021 13:39:47 |
Obtiene un objeto que hereda una clase base genérica

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