Forum: Compiler & IDEs C# Interface verständnis Problem


von Martin (Gast)


Angehängte Dateien:

Lesenswert?

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

von Peter II (Gast)


Lesenswert?

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?

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

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! :)

von Peter II (Gast)


Lesenswert?

Gib es keine Doku dafür?

Vermutlich liefert irgendeine Static Methode ein Objekt zurück was du 
verwenden musst.

von Martin (Gast)


Lesenswert?

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

von Peter II (Gast)


Lesenswert?

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?

von Martin (Gast)


Lesenswert?

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!

von Frank (Gast)


Lesenswert?

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.

von Peter II (Gast)


Lesenswert?

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.

von Martin (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.