with what net method done c# reflection introspection instanceof

what - ¿Cuál es el equivalente de C#al isInstance() de Java?



system.reflection c# (5)

Sé de is y en as a instanceof , pero ¿qué pasa con el isInstance() reflectiveInstance isInstance() ?


Depende, use si no quieres usar el resultado del yeso y lo usas as si lo hicieras. Casi nunca quieres escribir:

if(foo is Bar) { return (Bar)foo; }

En lugar de:

var bar = foo as Bar; if(bar != null) { return bar; }


El equivalente de obj.getClass().isInstance(otherObj) en C # es el siguiente:

bool result = obj.GetType().IsAssignableFrom(otherObj.GetType());

Tenga en cuenta que si bien Java y C # trabajan en el objeto de tipo de tiempo de ejecución (Java java.lang.Class ≣ C # System.Type ) de un obj (a través de .getClass() vs .getType() ), la isInstance de isInstance de Java toma un objeto como argumento , mientras que C # ''s IsAssignableFrom espera otro objeto System.Type .


El siguiente código puede ser alternativo a IsAssignableFrom .

parentObject.GetType().IsInstanceOfType(inheritedObject)

Consulte la descripción de Type.IsInstanceOfType en MSDN.


justo fuera de mi cabeza, también podrías hacer:

bool result = ((obj as MyClass) != null)

No estoy seguro de cuál funcionaría mejor. Lo dejaré en manos de otra persona para compararlo :)


bool result = (obj is MyClass); // Better than using ''as''