Zaczęli używać 'var' i zapomnieli co jakie typy zwraca...
LoadFile zwraca Assembly. Później odczytujesz typ tego, więc dostajesz typ Assembly. Potem próbujesz stworzyć instancję typu Assembly. No.. tak się nie da.
Jeżeli nie znasz fullname swojej kontrolki (np. "AddBook.AddBook") to pobierz typy ze swojego assembly (metoda GetTypes o ile pamiętam i sprawdź, który z tych typów dziedziczy po Control).
np. w jednym z moich programów wygląda to tak:
this.mailClients.Clear();
string[] componentFiles = Directory.GetFiles(componentsDirectory, "*.dll");
for(int i = 0; i < componentFiles.Length; i++)
{
Assembly componentAssembly = Assembly.LoadFile(componentFiles[i]);
Type[] componentTypes = componentAssembly.GetTypes();
foreach (Type componentType in componentTypes)
{
if (typeof(MoorHunt.MailClient).IsAssignableFrom(componentType))
{
this.mailClients.Add(Activator.CreateInstance(componentType) as MoorHunt.MailClient);
}
}
int progressPercentage = 100 * (i + 1) / componentFiles.Length;
LoadComponentsProgressChangedEventArgs eArgs = new LoadComponentsProgressChangedEventArgs(
progressPercentage, new FileInfo(componentFiles[i]).Name, null);
async.Post(delegate(object e)
{
OnLoadComponentsProgressChanged(e as LoadComponentsProgressChangedEventArgs);
}, eArgs);
}