typeof(IDictionary).IsAssignableFrom(fieldType);
IDictionary类型的对象可不可以装 fieldType类型的对象
这里的fieldType可以是任意类型
如果可以装就返回true,不能装就返回false。
↓下面是官方文档里的解释
Type.IsAssignableFrom(Type) 方法
定义
命名空间:System
程序集:System.Runtime.dll
Source:Type.Helpers.cs
确定指定类型 c 的实例是否能分配给当前类型的变量。
public virtual bool IsAssignableFrom (Type? c);
参数
c
Type 要与当前类型进行比较的类型。
返回 Boolean
如果满足下列任一条件,则为 true:
c 和当前实例表示相同类型。
c 是从当前实例直接或间接派生的。 如果继承于当前实例,则 c 是从当前实例直接派生的;如果继承于从当前实例继承的接连一个或多个类,则 c 是从当前实例间接派生的。
当前实例是实现 的 c 接口。
c 是一个泛型类型参数,并且当前实例表示 c 的约束之一。
c 表示值类型,当前实例表示 Nullable<c> Visual Basic) Nullable(Of c) 中的 (。
如果不满足上述任何一个条件或者 c 为 false,则为 null。
fieldType.GetGenericArguments()[0]
Type[] types= fieldType.GetGenericArguments();
返回该类型中的泛型类型们,返回的是Type数组
因为像Dictionary就有两个泛型 从左到右,types[0],types[1];