/// <summary>
        /// 根据插件类型获取相同类型的所有插件
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="models"></param>
        /// <param name="Type"></param>
        /// <returns></returns>
        public static List <T> CreateInstancesByPluginType <T>(this System.Reflection.Assembly[] models, string Type = "") where T : class
        {
            if (ListObject == null)
            {
                ListObject = new Dictionary <string, object>();
            }
            List <T> lstObject = new List <T>();

            foreach (var model in models)
            {
                //System.Threading.Tasks.Parallel.ForEach(models, model =>
                //{
                var types = model.GetTypesByType(Type);
                if (types != null && types.Count > 0)
                {
                    foreach (var type in types)
                    {
                        //System.Threading.Tasks.Parallel.ForEach(types, type =>
                        //{
                        string          assemblyPluginId = model.GetAssemblyPluginAttribute().ID;
                        PluginAttribute pluginAttribute  = type.GetPluginAttribute();
                        string          pluginId         = pluginAttribute.ID;
                        object          obj = null;
                        if (ListObject.ContainsKey(assemblyPluginId.ToLower() + pluginId.ToLower()))
                        {
                            obj = ListObject[assemblyPluginId.ToLower() + pluginId.ToLower()];
                        }
                        if (obj != null)
                        {
                            lstObject.Add(obj as T);
                        }
                        else
                        {
                            obj = type.GetConstructor(new Type[] { }).Invoke(null);
                            //obj = Activator.CreateInstance(type);
                            lstObject.Add(obj as T);
                            if (pluginAttribute.IsSingleInstance)
                            {
                                ListObject.Add(assemblyPluginId.ToLower() + pluginId.ToLower(), obj);
                            }
                        }
                        //});
                    }
                }
                //});
            }
            return(lstObject);
        }
        /// <summary>
        /// 获取所有插件内插件类插件信息
        /// </summary>
        /// <returns></returns>
        public static List <PluginAttribute> GetPluginAttributes(this System.Reflection.Assembly model)
        {
            List <PluginAttribute> lstObject = new List <PluginAttribute>();
            var types = model.GetTypesByType();

            if (types != null && types.Count > 0)
            {
                System.Threading.Tasks.Parallel.ForEach(types, type =>
                {
                    PluginAttribute pluginAttribute = type.GetPluginAttribute();
                    if (pluginAttribute != null)
                    {
                        lstObject.Add(pluginAttribute);
                    }
                });
            }
            return(lstObject);
        }