internal static void GetXlobSettings(IDictionary<string, string> parameters, out IXmlCompressor compression)
{
string compr = parameters == null ? null : parameters["compression"];
if (string.IsNullOrEmpty(compr))
compression = null;
else if (compr.Equals("gzip", StringComparison.OrdinalIgnoreCase))
compression = new XmlTextCompressor(GZipCompressor.Instance);
else
{
System.Type compressor = System.Type.GetType(compr);
if (typeof(IXmlCompressor).IsAssignableFrom(compressor))
compression = (IXmlCompressor)System.Activator.CreateInstance(compressor);
else if (typeof(IStreamCompressor).IsAssignableFrom(compressor))
compression = new XmlTextCompressor((IStreamCompressor)System.Activator.CreateInstance(compressor));
else
throw new Exception("Unknown compression type.");
}
IParameterizedType parameterized = compression as IParameterizedType;
if (parameterized != null) parameterized.SetParameterValues(parameters);
}
}