Gå til innhold

Litt mer om generiske klasser


Anbefalte innlegg

Prøver å lage en generisk klasse (tror jeg) som skal håndtere et medlem av en brukergruppe. I programmet vårt har vi definert brukergrupper som kan være medlem av brukergrupper, slik som i NT domene. Dermed vil en bruker kunne være inndirekte medlem av en brukergruppe, fordi en gruppe kan være medlem av andre grupper.

 

I vinduet der jeg vil vise bruker gruppens medlemmer vil jeg vise en liste som har både brukere og grupper. Vil det være hensiktsmessig å lage en generisk klassse som representerer postene i listen, eller ville du lagd en klasse som inneholdt begge deler?

Altså noe slikt (sammendratt):

// generisk variant
class MemberClass<tMember>
{
 tMember ThisMember;
....
}

// Andre varianten
class MemberClass
{
 UserClass _ThisUser;
 UsergroupClass _ThisUsergroup
 bool _IsUser;
....
}

 

Deres meninger folkens... ;-)

 

Takker på forhånd

Ole

Lenke til kommentar
Videoannonse
Annonse

Mitt forslag:

 

public class PermissionSet
{
 public Permission InheritedPermissionSet { get; }
 // blablabla
}

public class User
{
 public string Username { get; set;}
 public int PasswordHash { get; set; }
 // Etc.

 public PermissionSet AssignedPermissions { ... }
 public PermissionSet PermissionGroup { ... }
}

 

Eller noe i den duren.

Lenke til kommentar
Mitt forslag:

 

public class PermissionSet
{
 public Permission InheritedPermissionSet { get; }
 // blablabla
}

public class User
{
 public string Username { get; set;}
 public int PasswordHash { get; set; }
 // Etc.

 public PermissionSet AssignedPermissions { ... }
 public PermissionSet PermissionGroup { ... }
}

 

Eller noe i den duren.

 

Dette var nok litt OffTopic ;-) UserClass og UsergroupClass er ferdige og kjører som bare det. Dette handler mer om visningen. Har en Form som viser gruppen og dens medlemmer. Medlemmene er representert i en liste. Greia er at et medlem kan være en bruker eller en brukergruppe. Skal derfor lage en klasse som skal brukes in en List<MemberClass> som igjen skal være datasource til en listbox. Det er MemberClass som er saken her. Ville du laget den generisk eller ville du brukt UserClass og UsergroupClass som komponenter i MemberClass ?

 

Ole

Lenke til kommentar

Jeg ville jeg brukt inheritence eller interface for å kunne legge begge deler i samme liste.

 

edit: men hvis de allerede er ferdig, så er det ikke så mye å gjøre med det. Generics blir ikke en snarvei, fordi MemberClass<UserClass> er en helt annen klasse en MemberClass<UserGroup> og kan ikke blandes.

Endret av GeirGrusom
Lenke til kommentar
Jeg ville jeg brukt inheritence eller interface for å kunne legge begge deler i samme liste.

 

edit: men hvis de allerede er ferdig, så er det ikke så mye å gjøre med det. Generics blir ikke en snarvei, fordi MemberClass<UserClass> er en helt annen klasse en MemberClass<UserGroup> og kan ikke blandes.

Ok. Var nesten det jeg tenkte meg.

 

Interface ville kansje vært veien å gå. Skal vurdere det...

I Clarion kan jeg implementere så mange interface jeg vil. Går ut ifra at man kan det i C# også.

 

Ole

Lenke til kommentar
Man kan arve så mange interface man vil ja. Men man kan bare arve fra én klasse.

 

Ok. I Clarion gjør jeg slik:

MyClass	   CLASS(BaseClass),implements(IF1, IF2, IF3, ..., IFn)
<stuff>
			  END

 

Du er sikkert snill og forteller hvordan man gjør det i SE SKARP ;-)

Lenke til kommentar
Vurdert å kjøpe en bok? ;)

 

class MyClass : IFoo, IBar, IZot 
{
 // ...
}

 

bok? Har masse bøker, plus MSDN. Bruker det ganske mye, men bare når jeg trenger det. Trengte egentlig ikek infoen om interface akkurat nå, men siden du var i farta så tenkte jeg det var på sin plass å fullføre temaet i denne tråden. Nyttig for andre som søker vettu ;-)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...