Laden...

VB.net zu C#: Konvertierungsproblem

Erstellt von Mr. Ed vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.024 Views
Mr. Ed Themenstarter:in
44 Beiträge seit 2009
vor 14 Jahren
VB.net zu C#: Konvertierungsproblem

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

1.564 Beiträge seit 2007
vor 14 Jahren

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ß.

Mr. Ed Themenstarter:in
44 Beiträge seit 2009
vor 14 Jahren

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

1.564 Beiträge seit 2007
vor 14 Jahren

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ß.

C
116 Beiträge seit 2004
vor 14 Jahren

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(); 

Mr. Ed Themenstarter:in
44 Beiträge seit 2009
vor 14 Jahren

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

C
116 Beiträge seit 2004
vor 14 Jahren

Ja genau so ist der Aufbau.

Mr. Ed Themenstarter:in
44 Beiträge seit 2009
vor 14 Jahren

Super funktioniert! Ihr seits spitze!!!!!!!

Viele Grüße
Mr. Ed