Hi, vorab ich versuche mir gerade C# selbst beizubringen (mithilfe diverser Bücher / Webseiten), allerdings ich habe mir als "Übungsprojekt" eine Software ausgesucht mit der ich Beruflich arbeite. Dies ist MOVEit DMZ (falls das jemand kennt). Ich möchte nun eine C# Projekt erstellen das mir Ordner automatisch erstellt - also unter Java mit verwendung der API kein Problem, aber unter C# wird hier mit Interfaces gearbeitet. Das Grundsätzliche Konzept ist mir "halbwegs" klar - wobei ich nicht ganz verstehen wieso hier mit Schnittstellen gearbeitet wird und nicht einfach die Klasse "direkt" angesprochen werden kann. Also zu meinem Problem, ich binde in Visual Studio Community Edition 2015 die API als Referenz ein, damit erscheint Sie im Objekt Explorer und ich kann Sie mir schon mal anschauen - siehe Bild 1. Nun muss ich ja eine Klasse erstellen die das Interface implementiert z.b. mit: CODE: namespace MOVEitDMZConfig { class MIConnect : MOVEitAPI.clientObj { } } Damit werden dann von VS die Methoden entsprechend der definition erstellt: public string AddFolder { throw new NotImplementedException(); } usw. Hier habe ich schon mein verständniss Problem, die eigentliche Klasse würde folgende Variablen benötigen: public virtual string AddFolder(string NewName, string newType, string newDescription, string newOwner, string newParentID) aber wie bekomme ich das denn hin? Ich habe schon mal versuchsweise einfach die Variablen mit this.Variable in der get "Methode" eingegeben aber das klappt einfach nicht. Ich hoffe ihr seht wo mein eigentliches Verständnis Problem ist? Der zweite Punkt auch wieder auf das bezogen ist bei folgender Methode: public bool UserClone(string OrigUsername, string NewUsername, string Password, string RealName, string Email, string Notes = "", ref bool ForceChangePassword) wie oder was soll ich bei ForceChangePassword machen? Vermutlich ja in der Methoden definition innerhalb meiner MIConnect Klasse? generell, ja ich weiß es fehlt mir teilweise noch am Objektorientierten Ansatz / denkweise, ich lerne aber am besten beim machen und lese mich dann in die Themen entsprechend ein. Aber hier komme ich so leider nicht so recht weiter... Vielen vielen lieben Dank, Martin
Martin schrieb: > Nun muss ich ja eine Klasse erstellen die das Interface implementiert sicher da du das musst? Willst du die Funktionen selber Implantieren oder willst du die API nutzen?
Hi, hm ja also ganz sicher bin ich ehrlich gesagt nicht, VS sagt mir halt wenn ich versuche ein Objekt zu erstellen ala: MOVEitAPI.clientObjClass MIAPI = new MOVEitAPI.clientObjClass(); das ich das Interface verwenden soll.. Also kurz und knapp, ich möchte eigentlich nur direkt die Methoden aus der API verwenden - mehr nicht... Danke! :)
Gib es keine Doku dafür? Vermutlich liefert irgendeine Static Methode ein Objekt zurück was du verwenden musst.
Hm, die Doku dazu gibt leider nichts her dafür. Ich vermute ja eben denn Fehler auf Schicht 8 bei mir - aber ich komme einfach nicht dahinter...
Martin schrieb: > Hm, > die Doku dazu gibt leider nichts her dafür. keine Beispiele keine Doku was soll denn das für eine API sein? Hast du mal einen Link, wo du es geladen hast?
Naja, das problem ist das das Produkt im Enterprise segment angesiedelt ist und man sich hier wenn dann kostenpflichtigen Support einkauft. Die API selbst ist nicht downloadbar sondern nur kostenpflichtig zu kaufen. Sonst würde ich gern denn Link zur verfügung stellen, und sonst gäbe es vermutlich hundert tausend beispiele mit denen ich mich da tiefer einarbeiten kann. Die "Beispiele" beziehen sich immer nur auf vbs z.b.: ' Sign on set oMI = CreateObject("MOVEitAPI.clientObj") oMI.Host = "***" if oMI.SignOn("apiuser", "pass123")then der Witz ist ja das hier wieder direkt die Klasse angesprochen wird. Kann ich C# / VS mit irgendeinem Schlüsselwort oder sonst was dem Compiler sagen das ich nicht das Interface sondern nur die Klasse verwenden möchte? Danke!
Vermutlich versucht Du hier ein COM-Objekt zu initialisieren. Schau mal hier: http://stackoverflow.com/questions/2483659/interop-type-cannot-be-embedded Dort hatte jemand dasselbe Problem.
Martin schrieb: > Die "Beispiele" beziehen sich immer nur auf vbs z.b.: > ' Sign on > set oMI = CreateObject("MOVEitAPI.clientObj") das sieht mehr sehr nach COM aus. Du kannst einfache ein mit den VS add Referenz und dann dort das passende COM-Objekt hinzufügen.
Ahhh, danke euch beiden. Ich habe den Wert "Embed Interop Types" auf "False" gesetzt und schon kann ich die Klasse direkt ansprechen!! Danke!!! :) Jetzt muss ich nur nachlesen was der schalter bedeutet und macht. Vielen lieben dank! Gruss, Martin
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.