private static PluginInstance ActiveAndAdd(PackageMetadata metadata, Type type) { if (metadata == null || type == null) { return(null); } if (StringUtils.EqualsIgnoreCase(metadata.Id, "SS.Home")) { return(null); } var s = Stopwatch.StartNew(); //var plugin = (IPlugin)Activator.CreateInstance(type); var plugin = (PluginBase)Activator.CreateInstance(type); plugin.Initialize(metadata); var service = new ServiceImpl(metadata); plugin.Startup(service); PluginContentTableManager.SyncContentTable(service); PluginDatabaseTableManager.SyncTable(service); return(new PluginInstance(metadata, service, plugin, s.ElapsedMilliseconds)); }
// TODO: 增加SINGLETON约束 private static PluginInfo ActiveAndAdd(PackageMetadata metadata, Type type) { if (metadata == null || type == null) { return(null); } var s = Stopwatch.StartNew(); //var plugin = (IPlugin)Activator.CreateInstance(type); var plugin = (PluginBase)Activator.CreateInstance(type); plugin.Initialize(metadata, Environment, new PluginApiCollection { AdminApi = new AdminApi(metadata), ConfigApi = new ConfigApi(metadata), ContentApi = ContentApi.Instance, DataApi = DataProvider.DataApi, FilesApi = FilesApi.Instance, ChannelApi = ChannelApi.Instance, ParseApi = ParseApi.Instance, PluginApi = new PluginApi(metadata), SiteApi = SiteApi.Instance, UserApi = UserApi.Instance }); var service = new PluginService(metadata); plugin.Startup(service); PluginContentTableManager.SyncContentTable(service); PluginDatabaseTableManager.SyncTable(service); return(new PluginInfo(metadata, service, plugin, s.ElapsedMilliseconds)); }