Avatar billede mysitesolution Nybegynder
23. september 2006 - 23:29 Der er 5 kommentarer og
1 løsning

Generics, c#

Hej...

Når man bruger generics kan man jo specificere om det skal være en klasse, struct osv. Men man kan ikke gøre så der skal være en enum? eller jo med Enum klassen, men så kan man ikke udnytte at enum bare er en tal værdi
Avatar billede arne_v Ekspert
24. september 2006 - 00:04 #1
Kan du forklare lidt nærmere hvad det er du vil ?
Avatar billede mysitesolution Nybegynder
24. september 2006 - 00:19 #2
Min idé var at man kunne gøre noget i retningen af dette:

class A<T> where T : enum
{
    T get()
    {
        T navn = (T)1;
        navn |= T(2);
        return navn;
    }
}

men dette er ikke muligt... kan godt se hvorfor. klassen har jo ikke en chance for at se hvad der gemmer sig i enumen. Men den løsning jeg har kommet med er ikke særlig god. Den er ved at bruge en int og en Type, men så skal man unboxe hvilket ikke er så cool
    }
}
Avatar billede mysitesolution Nybegynder
24. september 2006 - 00:23 #3
navn |= (T)2; self.
Avatar billede arne_v Ekspert
24. september 2006 - 01:38 #4
Jeg kan stadig ikke se pointen.

Men jeg er ret sikker på at det ikke kan lade sig gøre, så ...
Avatar billede mysitesolution Nybegynder
24. september 2006 - 10:38 #5
Kan godt være at det er mig der bare ikke har tænkt på andre muligheder så :/

Men det er fordi jeg vil lave en input controller der tager gamepadbuttons, keyboard, og  så har jeg en enum med actions som fx moveforward, movebackward. Jeg vil så kunne sige at GamePadButtons.A er lig med Actions.Jump, og at Keys.Space også er lig med Actions.Jump. Til sidst vil jeg så kunne få alle de ting der skal gøres via en GetActions metode... Idelle:

    public class InputControllerBase<KeyType, ActionType> where KeyType : enum where ActionType : enum
    {
        private Dictionary<KeyType, ActionType> associations = new Dictionary<KeyType,ActionType>();

        public Dictionary<KeyType, ActionType> Associations
        {
            get
            {
                return associations;
            }
        }

        public int GetActions()
        {
            ActionType actions = default (ActionType);
     
            KeyboardState keyboard = Keyboard.GetState();
            GamePadState gamePad = GamePad.GetState(PlayerIndex.Any);

            foreach (KeyValuePair<KeyType, ActionType> value in associations)
            {
                if (value.Key == typeof(Keys))
                {
                   
                }
                else if (value.Key.GetType() == typeof(GamePadButtons))
                {
                }
                else if (value.Key.GetType() == typeof(GamePadDPad))
                {
                }
            }

            return actions;
        }
    }
Avatar billede mysitesolution Nybegynder
05. november 2006 - 20:13 #6
lukker
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