Witam!
Mam następujący problem: otóż posiadam w moim projekcie interfejs, zdefiniowany jak poniżej:
public interface IObserwujący
{
string Nazwa { get;}
string Opis { get;}
string Autor { get;}
PacketCommunicator PC { set; }
bool Aktualizuj(Packet p);
int Priorytet { get; set; }
}
Interfejs ma służyć do późniejszego pisania pluginów do programu, problem w tym, że przy próbie załadowania pluginu wywala mi poniższy wyjątek:
"Unable to cast object of type Class1 to type Pluin.IObserwujący"
Poniżej zamieszczam kod odpowiedzialny za ładowanie pluginów:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
DirectoryInfo di = new DirectoryInfo("Plugins");
foreach (FileInfo fi in di.GetFiles("*.dll"))
{
Assembly pa = Assembly.LoadFrom(fi.FullName);
foreach (Type plugintype in pa.GetExportedTypes())
{
if (plugintype.GetInterface(typeof(IObserwujący).Name) != null)
{
try
{
IObserwujący plugin = (IObserwujący)Activator.CreateInstance(plugintype);
Pluginy.Add(plugin);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
listBox1.Items.Refresh();
}
Nie rozumiem problemu, jako, że plugin oczywiście implementuje w pełni intefejs IObserwujący. Z góry dziękuję za pomoc, pozdrawiam.