При попытке узнать Unity, я продолжаю видеть следующий код для переопределения GetControllerInstance
в MVC:
if(!typeof(IController).IsAssignableFrom(controllerType)) { ... }
это кажется мне довольно запутанным способом писать в основном
if(controllerType is IController) { ... }
Я понимаю, что существуют тонкие различия между is
и IsAssignableFrom
, т.е. IsAssignableFrom
не включает преобразования преобразования, но я изо всех сил стараюсь понять последствия этой разницы в практических сценариях.
Когда это целесообразно выбрать IsAssignableFrom
над is
? Какая разница в GetControllerExample
?
if (!typeof(IController).IsAssignableFrom(controllerType))
throw new ArgumentException(...);
return _container.Resolve(controllerType) as IController;