Avatar billede CodingJoe Nybegynder
05. december 2011 - 20:43 Der er 4 kommentarer og
1 løsning

Reflection - finde alle mine List<MinKlasse> i en assembly

Jeg har problemer med at finde alle mine generic lister i en assembly.

Jeg har en List<Types>, hvor jeg med succes har fundet alle mine klasser. Nu vil jeg finde alle dem, hvor jeg har en generic liste.

Dvs. i reflection vil jeg spørge på alle de PropertyInfo, hvori 'List´1' fremgår.

Assembly assemblies = Assembly.LoadFrom(dllName);
var allTypes = assemblies.GetTypes();

I allTypes forsøger jeg vha. linq at finde alle properties, hvor List<XXX>, og vil egentlig også gerne fange alle properties hvor der er tale om XXX[]. Kan det lade sig gøre?
Avatar billede CodingJoe Nybegynder
05. december 2011 - 20:53 #1
var propertyInfos = allTypes.Select(f => f.GetProperties()).ToList();

Giver mig nu alle mine properties....men kun at fange alle dem med mine List<..> eller xxx[] er udfordringen...
Avatar billede CodingJoe Nybegynder
05. december 2011 - 21:09 #2
var pis = new List<string>();
foreach (var p in propertyInfos) {
    foreach (var pi in p){
      if (Equals(pi.PropertyType.Name, "List`1")) {
            pis.Add(pi.Name);
      }
    }
}
Et Linq udtryk ville gøre det mere lækkert ;D
Avatar billede CodingJoe Nybegynder
05. december 2011 - 21:14 #3
Hmmm kan se det er instans navnet, jeg får fat i, men ikke navnet på typen.
Avatar billede CodingJoe Nybegynder
05. december 2011 - 21:25 #4
Fik løst det ved at gemme navnet, før jeg laver mine foreach.
Avatar billede CodingJoe Nybegynder
05. december 2011 - 21:25 #5
Løst af mig selv :D
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