public void AddFile(string fileName)
{
if (!File.Exists(fileName))
{
throw new DeviceDetectorException("Specified browser file doesn't exist", new FileNotFoundException(string.Empty, fileName));
}
if (String.Compare(Path.GetExtension(fileName), ".browser", true) != 0)
{
throw new DeviceDetectorException("Specified file has invalid extension");
}
using (XmlReader xmlReader = XmlReader.Create(fileName))
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(browsers));
if (!xmlSerializer.CanDeserialize(xmlReader))
{
throw new DeviceDetectorException("Invalid file format");
}
try
{
browsers browsersFile = xmlSerializer.Deserialize(xmlReader) as browsers;
string keyName = Path.GetFileNameWithoutExtension(fileName);
if (!this.browserFiles.ContainsKey(keyName))
{
this.browserFiles.Add(keyName, browsersFile);
}
}
catch (InvalidOperationException ex)
{
throw new DeviceDetectorException("Cannot parse specified file \"" + fileName + "\"", ex);
}
}
}