学ぼうとしながら団結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;
ベストアンサー1
それは同じではありません。
if(controllerType is IController)
だろういつもは常に であり、 は決して ではないfalse
ため、は と評価されます。controllerType
Type
Type
IController
このis
演算子は、実例特定のタイプと互換性があります。
IsAssignableFromメソッドは、タイプ指定されたタイプと互換性があります。