Hej!
Jag har ett problem med en typecasting.
Jag försöker läsa in en "assembly" via en dll och allokera ett objekt från assemblyn.
Att allokera objektet går utmärkt men när jag jag försöker typecasta det så kraschar det (
System.InvalidCastException )
Jag läste en artikel där dom läser in dynamiskt dll'er och skapar objekt. Och det vill jag också göra.
I mitt fall så vill jag kunna lägga dll filer i en mapp och sen ska programmet/programmen läsa in de dll'erna, som ett plugin system. (Anledningen till detta är att programmet arbetar i ett nätverk och jag vill slippa lägga upp dll'erna på varje dator utan vill lägga dom på en delad resurs på nätverket. Samt kunna lägga till dll'er med ny funktionalliet allt eftersom att jag får lust.)
I mitt fall så består det av tre delar (eller flera)
1. Exefilen eller själva huvudprogrammet.
2. En dll med delade resurser, innehåller lite konstanter och klasser som är tänkt att användas lite varstans.
3. plugin dll'en.
Både exefilen och plugin filen har varsin referens till dll filen med de delade resurserna. exefilen och och pluginfilen känner dock inte till varandra.
/*delade resursfilen:
(innehåller fler saker men det är ointressant just nu)*/
public interface template_interface
{
void go();
}
//Plugin filen
public class Template3 : System.Windows.Forms.Form, template_interface
{
public Template3(){
//micklar
}
public void go()
{
//micklar mera
}
}
/*Huvud exefilen
läser in dll filen, letar reda i dll filen efter den klassen implementerar gränssnittet template_interface
*/
Type type;
//initierar type och förvissar mig om att den implementerar gränssnitet template_interface
object o = Activator.CreateInstance(type); //funkar utmärkt
template_interface ti = (template_interface)o; /*kastar typecastexception, trots att den implementerar gränssnittet.
Går iofs att slå ihop raderna till en rad men jag har separerat på dom i avlusningssyfte.*/
Hoppas jag har varit tillräckligt tydlig.
Jag är tacksam för all hjälp jag får. :)