Использование IsAssignableFrom и ключевого слова «is» в C #
Пытаясь научитьсяЕдинствоЯ продолжаю видеть следующий код для переопределения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;