/// <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>();
        }