2016-12-16 4 views
1

Ich habe einen VB-basierten Codeblock, den ich in C# umschreiben muss und ich schreibe eine Funktion, die eine Instanz eines COM-Objekts erstellt und eine neue Terminalsitzung erstellt, goes aus, liest einen Bildschirm und gibt den Inhalt des Bildschirms zurück. Im Moment habe ich das Gefühl, dass ich in C# nicht den richtigen Ansatz finde und würde mich über Feedback freuen.Korrekte Einstellung einer Instanz eines COM-Objekts in C#

VB Code

set bzlipi = CreateObject("BlueZone.LIPI") 
bzlipi.Username = "myuserid" 
bzlipi.Password = "mypassword" 
bzlipi.HostAddress = "101.122.0.138" 
bzlipi.ShowTransferStatusWindow = False 
bzlipi.LocalPromptBeforeOverwrite = False 
result = bzlipi.ReceiveFile("local.txt", "MYLIB/F4101") 
MsgBox bzlipi.ErrorMessage 

C#

using BZLIPILib; 
    using BZWHLLLib; 

    public void Connector() { 
    object Host = Activator.CreateInstance(Type.GetType("BZLIPILib.LIPI")); 
    //Set Host properties 
    } 

Wie es aussieht, wird diese Erkennung nicht tut oben keine Eigenschaften innerhalb Host als seine
VB Gegenstück. Ich habe alle verfügbaren COM-Objekt
Referenzen im Paket-Manager meines VS-Projekts gemacht. Was soll ich sein?
anders machen?

+0

Gibt es einen Grund, die Bibliothek nicht direkt zu referenzieren? –

+0

Kein echter Grund außer dem, was der Verkäufer empfohlen hat. – LifeOf0sAnd1s

+1

Der C# -Code referenziert tatsächlich die Bibliothek direkt, deshalb funktionieren die 'using'-Anweisungen. Es nicht zu benutzen, ist na ja, unklug. Aber erfordert 'dynamic Host' und' Type.GetTypeFromProgID ("BlueZone.LIPI") '. IntelliSense zeigt weiterhin keine Mitglieder an. –

Antwort

1

Wechsel:

using BZLIPILib; 
using BZWHLLLib; 
... 
object Host = Activator.CreateInstance(Type.GetType("BZLIPILib.LIPI")); 

... bis:

using BZLIPILib; 
using BZWHLLLib; 
... 

LIPI Host = new LIPI(); 

... dann Intellisense wird wie erwartet.

Update: Es scheint, dass der eigentliche Code erforderlich ist:

using BZLIPILib; 
using BZWHLLLib; 
... 

LipiObj Host = new LipiObj(); 

... wie pro Kommentar des OP unten.

+0

Sie hatten meistens Recht! Es ist eigentlich LipiObj Host = new LipiObj(); – LifeOf0sAnd1s

+0

@ LifeOf0sAnd1s Oh! Ich frage mich, warum CreateObject ("BlueZone.LIPI") funktioniert hat? – MickyD

+0

Ich bin mir nicht sicher. Ich stehe auf eine Menge Probleme, weil all diese in alten Auto Hot Key-Objekten mit VB6 eingebettet sind – LifeOf0sAnd1s

Verwandte Themen