Anderen Namespace in der eigenen .cs Datei (Klasse) benutzen. [gelöst]



  • Hi Community,

    ich habe in einer seperaten .cs Datei meine Klasse.
    Eine der Funktionen soll mir einen Ordner (unter Windows) erstellen.
    Dabei greife ich auf den System.IO Namespace zu.

    Leide bekomme ich die Meldung:

    Fehler 1 Der Name "IO" ist im aktuellen Kontext nicht vorhanden. C:\Dokumente und Einstellungen\****\Eigene Dateien\Visual Studio 2008\Projects\MDManager\MDManager\MobileDeviceManager.cs 15 13 MDManager

    Um das ganze noch ein wenig zu verdeutliche hier ein Code Ausschnitt:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace MDManager
    {
        class MobileDeviceManager
        {
            private
            String FolderPath;
            int CreateFolder(int id)
            {
                String NewDir = FolderPath + "\\" + Convert.ToString(id);
                IO.Directory.CreateDirectory(NewDir); // <-- Problem
                return 0;
            }
    
    //... usw.
    

    Was mache ich falsch und wie müsste ich es ändern um meinen Ordner erstellen zu können.

    Gruß Jeg!



  • Habe durchs Probieren das Problem gelöst.
    Desshalb schreibe ich für alle die es interessiert was falsch war.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO; // <-- Dieser Eintrag muss hinzugefügt werden
    
    namespace MDManager
    {
        class MobileDeviceManager
        {
            private
            String FolderPath;
            int CreateFolder(int id)
            {
                String NewDir = FolderPath + "\\" + Convert.ToString(id);
                Directory.CreateDirectory(NewDir); // <-- Jetzt funktioniert es
                return 0;
            }
    
    // usw.
    

    Ich habe eigentlich angenommen das

    System.IO.Directory.CreateDirectory()
    

    dem oben angezeigtem Code entspricht. Könnte evt. jemand dazu Stellung nehmen der sich damit auskennt?

    Gruß Jeg!



  • Jeg_D schrieb:

    Ich habe eigentlich angenommen das

    System.IO.Directory.CreateDirectory()
    

    dem oben angezeigtem Code entspricht.

    Tut es auch.

    Du hast allerdings nur IO.Directory verwendet, ich vermute im Glauben, dass das System durch using System abgedeckt sei. Das geht aber so nicht (weil keine Klasse).

    Entweder den "tiefsten" Namespace durch using bekannt machen (using System.IO) oder eben die Klasse voll spezifizieren, also System.IO.Directory.



  • entweder

    using System.IO;
    Directory.xxx
    

    oder

    System.IO.Directory.xxx
    
    using System;
    IO.Directory.xxx
    

    geht nicht, da die unteren namespaces wie zb IO nicht in einem anderen namespace wie zb System gesucht werden

    evtl hast du nicht gemerkt das du das System. im oberen beispiel vergessen hast {o;



  • Die Idee hinter dem Ansatz war übrigens gar nicht so dumm: in VB und C++ ginge derselbe Code. C# und VB gehen hier allerdings unterschiedliche Wege: während VB wie C++ beim Importieren von Namensbereichen die Philosophie verfolgt, dass dies auch für untergeordnete Namensbereiche gilt, tut C# das nicht.

    Weiß der Geier warum. (Wahrscheinlich um's kompatibel zu Java zu halten.)



  • Finde ich aber auch nur vernünftig so, weil man dann ja erst recht wieder nicht weiß, ob das jetzt eine voll qualifizierte Klassenangabe ist, oder sich das Package doch wieder in einem anderen befindet. Ich schätze diese Package-Imports ja schon nicht besonders, aber das würde dem ganzen ja noch die Krone aufsetzen ..



  • jemand` schrieb:

    Finde ich aber auch nur vernünftig so, weil man dann ja erst recht wieder nicht weiß, ob das jetzt eine voll qualifizierte Klassenangabe ist, oder sich das Package doch wieder in einem anderen befindet. Ich schätze diese Package-Imports ja schon nicht besonders, aber das würde dem ganzen ja noch die Krone aufsetzen ..

    Ich kann das Problem in jahrelanger Erfahrung mit C++ und VB nicht einmal ansatzweise nachvollziehen. Ich kann daher mit recht viel Zuversicht sagen, dass es auch in C# kein Problem wäre.



  • Und wenn man VS 2008 hat dann wird einem using XY vorgeschlagen und kann automatisch eingefügt werden.



  • Geht auch mit VS 1005 schon 😃


Anmelden zum Antworten