Hallo zusammen,
ich hab ein kleines Problem und zwar sagt mir dieser Codeschnipsel für VB zwar einiges, aber nicht alles.
With System.Reflection.Assembly.LoadFrom _
("http://mycompany.com/myforms.dll")
Ctype(Activator.CreateInstance( _
.GetType("Forms.Startup")),
Windows.Forms.Form).Show
End With
Assembly assembly = Assembly.LoadFrom("Pfad");
... das ist soweit klar, aber die Geschichte mit dem Typ bzw. Activator ist mir noch etwas schleierhaft, wie ich das unter C# realisieren kann.
Viele Grüße
Mr. Ed
Hallo
Versuch's mal so:
System.Reflection.Assembly.LoadFrom("http://mycompany.com/myforms.dll");
Form form = (Form)Activator.CreateInstance(Type.GetType("Forms.Startup"));
form.Show();
Grüße
Flo
Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+
Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.
Schonmal keine Fehler im Visual Studio 😃. Das Assembly wird auf jeden Fall geladen und ich muss von dem Assembly aus eine Form starten, was scheinbar der vorherige Code macht. Zeile 2. von dir Florian, hat ja so gesehen keinen Bezug zum geladenen Assembly.
Das
Form form = (Form)Activator.CreateInstance(Type.GetType("Forms.Startup"));
scheint nur den Typ "Forms.Startup" zu holen und folglich ist es so nicht möglich eine Instanz zu erstellen.
Kann das sein, dass bereits dieser VB Teil ansich falsch ist? Weil dann bräucht ich garnicht weiter probieren 😃
Viele Grüße
Mr. Ed
Ich bin zwar zur Zeit nicht so richtig in VB.NET drinnen aber der Code sieht für mich schon korrekt aus.
Versuch's mal so:
System.Reflection.Assembly.LoadFrom("http://mycompany.com/myforms.dll");
Type t = Type.GetType("Forms.Startup,myforms.dll"); // <== DLL mit angeben
Form form = (Form)Activator.CreateInstance(t);
form.Show();
Wenn das nicht funktioniert lass dir mal das Assembly aus Assembly.LoadFrom geben und iteriere über die Enthaltenen Typen um zu schauen ob die Form in dem angegebenen Namespace existiert.
Grüße
Flo
Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+
Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.
Probiers mal wie folgt:
System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFrom("http://mycompany.com/myforms.dll");
Form form = assembly.CreateInstance("Forms.Startup", true);
form.Show();
Das schaut doch schonmal super aus 😃. Eine Frage hätte ich jetzt noch und zwar hab ich den Namespace "Test" und die Form "MainForm".
Jetzt dachte ich mir
Form form = assembly.CreateInstance("Test.MainForm", true);
sollte das so funktionieren?
Viele Grüße
Mr. Ed
Ja genau so ist der Aufbau.