public static void LoadExpansions(string folderPath)
{
Trace.TraceInformation("LOADING CARDSETS FROM : " + folderPath);
var files = (from f in Directory.GetFiles(folderPath) where f.EndsWith(".dll") select f).OrderBy(
(a) => { int idx = Properties.Settings.Default.LoadSequence.IndexOf(Path.GetFileNameWithoutExtension(a).ToLower()); if (idx < 0) return int.MaxValue; return idx; });
foreach (var file in files)
{
try
{
Assembly assembly = Assembly.LoadFile(Path.GetFullPath(file));
var types = assembly.GetTypes();
foreach (var type in types)
{
if (type.IsSubclassOf(typeof(Expansion)))
{
var exp = Activator.CreateInstance(type) as Expansion;
if (exp != null)
{
if (expansions.ContainsKey(type.FullName))
{
if (!expansions.ContainsValue(exp))
{
Trace.TraceWarning("Cannot load two different expansions with same name: {0}.", type.FullName);
}
}
else
{
LoadExpansion(type.FullName, exp);
}
}
}
}
}
catch (BadImageFormatException)
{
continue;
}
}
}