Avatar billede alex_sleiborg Nybegynder
26. januar 2008 - 20:05 Der er 8 kommentarer og
1 løsning

Nedarve klasser

Hej

Jeg er igang med at lave en config klasse, som indeholder nogle funktioner til at skrive og læse i en xml fil. Min hoved klasse skal indeholde f.eks. Users, resolution og setup klasser. Jeg kan sagtens nedarve de andre klassers metoder til min hoved klasse. Men hvordan laver jeg det sådan, at hoved klassen ikke indeholder alle metoder som klasserne indeholder. Men noget ala det her

Config_Class cfg = new Config_Class();
cfg.Users.Add("Et eller andet", "Password);
cfg.Resolution.Change("1024*768");

I stedet for (Som det er nu)
cfg.AddUsers("Et eller andet", "Password);

Håber i forstår hvad jeg mener
Avatar billede Syska Mester
26. januar 2008 - 20:40 #1
Hej,

Du skal bare oprette din klasse i din main klassen som Properties

Ligesom når en klasse indeholder eksempel vis en int, string, etc. Så skal den bare indeholde en "Users" eller "Resolution" klasse ...

// ouT
Avatar billede alex_sleiborg Nybegynder
28. januar 2008 - 20:25 #2
Super. Hvordan kan jeg gøre sådan den eneste måde at tilgå klasserne på, er vha. hovedklassen? Smid et svar buzzzz
Avatar billede Syska Mester
29. januar 2008 - 01:43 #3
svar.

protected .... så kan main klassen tilgå de funktioner som den har arvet.

// ouT
Avatar billede alex_sleiborg Nybegynder
29. januar 2008 - 13:44 #4
Ja, men man ikke jo ikke sætte en klasse til at være protected... Jeg vil lave det sådan at jeg kun kan tilgå User klassen igennem hoved klassen. Og sådan som det er nu, bliver der ikke nedarvet noget

public class AppConfiguration
{
    User _user = new User();
    public AppConfiguration()
    {
        //
        // TODO: Add constructor logic here
        //
    }
    public User Users
    {
        get
        {
            return _user;
        }
        set
        {
            _user = value;
        }
    }
}

public class User
{
    public User()
    {
        //Constructor
    }
    public void AddNewUser(string name, string password)
    {
    }
    public void DelExistingUser(string name)
    {
    }
    public void EditPasswordOnUser(string name, string newPassword)
    {
    }
    public System.Collections.Generic.List<String> GetAlleUsers()
    {
        return null;
    }
}
Avatar billede Syska Mester
29. januar 2008 - 17:57 #5
"internal" måske ... mener det gør at kun andre klasser fra samme namespace kan bruge den ... eller samme dll fil ...

Jeg tror vi skal have en ekspert på banen her ... og ved ikke om den måde ville give mening ....

Men flyt user klassen ind i main klassen og gør den internal. kan ske det vil virke.

// ouT
Avatar billede alex_sleiborg Nybegynder
02. februar 2008 - 14:09 #6
Den kommer til at se således ud klassen

public class AppConfiguration
{
    CUser _user = new CUser();
    CAppFile _appFile = new CAppFile();
    public AppConfiguration()
    {
        //
        // TODO: Add constructor logic here
        //
    }
    public CUser Users
    {
        get
        {
            return _user;
        }
        set
        {
            _user = value;
        }
    }
    public CAppFile AppFile
    {
        get
        {
            return _appFile;
        }
        set
        {
            _appFile = value;
        }
    }
    public class CUser
    {
        public CUser()
        {
            //Constructor
        }
        public void AddNewUser(string name, string password)
        {
        }
        public void DelExistingUser(string name)
        {
        }
        public void EditPasswordOnUser(string name, string newPassword)
        {
        }
        public System.Collections.Generic.List<String> GetAlleUsers()
        {
            return null;
        }
    }
    public class CAppFile
    {
        public CAppFile()
        {
            //Constructor logic
        }
        public bool IsAppFilePresent()
        {
            if (File.Exists(@"AppFile.xml"))
                return true;
            return false;
        }
        public void MakeNewAppFile()
        {
            XmlDocument docXML = new XmlDocument();

            docXML.LoadXml("<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<Gallery>" +
                    "<Users>" +
                    "</Users>" +
                    "<Configuration>" +
                    "</Configuration>" +
                "</Gallery>");

            docXML.Save(@"AppFile.xml");
        }
    }
}

Tak for hjælpen buzzz
Avatar billede Syska Mester
03. februar 2008 - 23:17 #7
svar.

Mener hvis du laver CUser til protected, at at du stadig burde have adgang til den, men ikke sikker ... er lige kommet hjem fra en arbejds weekend på 35 timer ... zzzz

// ouTY
Avatar billede alex_sleiborg Nybegynder
04. februar 2008 - 13:30 #8
Det blev kun til en kommentar. Prøv lige igen :)
Avatar billede Syska Mester
05. februar 2008 - 01:00 #9
Du har allerede tidligere accepteret et andet svar ... så alt er i den fineste orden.

// ouyT
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester