Verwendung von IsAssignableFrom und dem Schlüsselwort "is" in C #
Während ich versuche zu lernenEinhei, Ich sehe immer wieder den folgenden Code zum Überschreiben vonGetControllerInstance
in MVC:
if(!typeof(IController).IsAssignableFrom(controllerType)) { ... }
dies scheint mir eine ziemlich verschlungene Art zu sein, im Grunde zu schreiben
if(controllerType is IController) { ... }
Ich schätze, es gibt subtile Unterschiede zwischenis
undIsAssignableFrom
, dhIsAssignableFrom
enthält keine Cast-Konvertierungen, aber ich habe Schwierigkeiten, die Auswirkungen dieses Unterschieds in praktischen Szenarien zu verstehen.
Wenn es wichtig ist, @ zu wählIsAssignableFrom
Überis
? Welchen Unterschied würde es in der @ machGetControllerExample
?
if (!typeof(IController).IsAssignableFrom(controllerType))
throw new ArgumentException(...);
return _container.Resolve(controllerType) as IController;