Autor Beitrag
GerhardS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49



BeitragVerfasst: Mi 26.06.19 12:53 
Hallo,
wahrscheinlich bin ich noch zu sehr von ObjectPascal geprägt, wenn ich den Fehler in folgendem Code nicht sehe:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
public class Commons
{        
  public bool CreateDir(string dirname)          
  {            
    try
    {
      using (var sftp = new SftpClient(MainForm.WebHosting.Host, MainForm.WebHosting.UserName, MainForm.WebHosting.Pw))
      {
        string rootdir = @"/home/gustav/";
        sftp.Connect();
        sftp.ChangeDirectory(rootdir);
        sftp.CreateDirectory(dirname);
        sftp.Disconnect();
      }
    }
    catch (Exception ex)
    {                    
       MessageBox.Show("Compilermeldung: " + ex.Message);
       return false;        
    }
    return true;
  }
}

Der Compiler bemängelt beim Aufruf der Methode CreateDir(string dirname) aus einer anderen Klasse heraus, es sei eine Objektreferenz erforderlich. Kann mir jemand zeigen, wie ich von CreateDir diese Referenz erstelle?

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 26.06.19 13:04 
Du möchtest scheinbar die Methode aufrufen ohne vorher die Klasse zu erzeugen (also ohne new in C# oder ehemals Klasse.Create() in Object Pascal).
Dazu muss die Methode statisch sein (du mußt static zur Signatur hinzufügen). Commons klingt nach einem Ding das man eh nie instanziieren will insofern kannst du gleich die ganze Klasse als static markieren.

Edit : Wo kommt MainForm in deinem Code her? Gefühlt hast du hier noch mehr Probleme.

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Moderiert von user profile iconTh69: Delphi-Tags hinzugefügt

Für diesen Beitrag haben gedankt: GerhardS
GerhardS Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49



BeitragVerfasst: Mi 26.06.19 13:58 
Danke für den Hinweis auf die Signatur. Mit public static bool CreateDir(string dirname) akzeptiert VS 2019 den Code. Weitere Probleme mit dem Compiler habe ich nicht. Jetzt kann ich testen, ob die Anwendung das tut, was ich mir vorgestellt habe.

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Moderiert von user profile iconTh69: Vollzitat entfernt.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 26.06.19 14:30 
Das, was Ralf meint, ist, daß du MainForm innerhalb deiner allgemeingültigen Klasse Commons nicht verwenden solltest, da du damit eine unnötige Abhängigkeit herstellst.
Übergebe doch am besten Host, UserName und Password als Parameter der Methode.