/// <summary> ///根据<paramref name="type"/>,<paramref name="instance"/>, 创建一个<see cref="XqModuleDescriptor"/>对象 /// </summary> /// <param name="type">模块的类型</param> /// <param name="instance">模块的实例</param> /// <param name="isLoadedAsPlugIn">是否为外部加载</param> public XqModuleDescriptor( [NotNull] Type type, [NotNull] IXqModule instance, bool isLoadedAsPlugIn) { XqCheck.NotNull(type, nameof(type)); XqCheck.NotNull(instance, nameof(instance)); ///type与instance的type不一样 if (!type.GetTypeInfo().IsAssignableFrom(instance.GetType())) { throw new ArgumentException($"Given module instance ({instance.GetType().AssemblyQualifiedName}) is not an instance of given module type: {type.AssemblyQualifiedName}"); } Type = type; Assembly = type.Assembly; Instance = instance; IsLoadedAsPlugIn = isLoadedAsPlugIn; _dependencies = new List <IXqModuleDescriptor>(); }