/// <summary> /// Exports the specified export package. /// </summary> /// <param name="exportPackage">The export package.</param> /// <param name="writer">The writer to which the data is exported to.</param> /// <param name="log">The log.</param> /// <param name="context">The export context information.</param> /// <exception cref="System.ArgumentNullException">exportPackage</exception> /// <exception cref="System.Exception"></exception> static public void Export(XElement exportPackage, TextWriter writer, Action <int, string> log = null, dynamic context = null) { if (exportPackage == null) { throw new ArgumentNullException("exportPackage"); } log = log ?? NullLogger; // ensure we have a logger of some sort log.Info("Export started"); try { var package = ExportPackage.Load(exportPackage); Type providerType = Type.GetType(package.ProviderType); ExportProvider provider = providerType != null ? Activator.CreateInstance(providerType) as ExportProvider : null; if (provider == null) { if (providerType == null) { throw new Exception(string.Format("Provider does not exist. '{0}'", package.ProviderType)); } throw new Exception(string.Format("Invalid export provider: '{0}'. ", package.ProviderType)); } provider.Export(package.Instructions, writer, log, context); log.Info("Export completed"); } catch (Exception ex) { log.Error(ex.Message); log.Info("Export aborted"); return; } }