public bool Save() { bool SaveOK = false; if (_IsNew) { IReportPlugin plugin = CreateInstance(); if (plugin != null) { ReportPluginInfo plugininfo = plugin.GetPluginInfo(); GUID = plugininfo.GUID; Description = plugininfo.Description; ReportName = plugininfo.ReportName; TopLevelMenuKey = plugininfo.TopLevelMenuKey; SecondLevelMenuKey = plugininfo.SecondLevelMenuKey; plugin.Dispose(); } } if (!Directory.Exists(_Folder)) { Directory.CreateDirectory(_Folder); } if (GUID.Length > 0) { Serializer <ReportPluginInfo> .Save(this, _Folder + GUID + ".xml"); OnChanged(this); _IsNew = false; SaveOK = true; } return(SaveOK); }
/// <summary> /// Creates an instance of the plugin corresponding to the GUID /// </summary> public IReportPlugin CreateInstance() { if (!File.Exists(FileName)) { return(null); } Assembly ass = Assembly.LoadFile(FileName); TypeFilter myFilter = new TypeFilter(MyInterfaceFilter); foreach (Type type in ass.GetTypes()) { if (type.GetInterfaces().Contains(typeof(IReportPlugin))) { IReportPlugin _plugin = Activator.CreateInstance(type) as IReportPlugin; if (_plugin.GetPluginInfo().GUID == GUID) { return(_plugin); } _plugin.Dispose(); } } return(null); }