Avatar billede lasserasch Juniormester
22. januar 2011 - 14:11 Der er 3 kommentarer og
1 løsning

GetValue i Reflection driller

Hejsa.

Har et reflection spørgsmål.

På en 'Commit' Metode i min Base klasse, som mit objekt nedarver fra forsøger jeg at gøre følgende:

-------------
public void Commit()
{

PropertyInfo[] propertyInfos = typeof(T).GetProperties();

foreach (PropertyInfo propertyInfo in propertyInfos)
{

  if (t == typeof(int))
  {
    int value = Convert.ToInt32(propertyInfo.GetValue(propertyInfo, null));  }
}
}

-------------

Jeg forsøger altså at løbe alle Properties igennem for objektet. Hvis en property er af typen int, så forsøger jeg at trække værdien ud. PropertyInfo er af typen Int32 når jeg debugger mig igennem.

Men når jeg forsøger at sætte value så fejler min kode.

Nogen som kan fortæller mig hvorfor?


System.Reflection.TargetException occurred
  Message=Objektet svarer ikke til destinationstypen.
  Source=mscorlib
  StackTrace:
      ved System.Reflection.RuntimeMethodInfo.CheckConsistency(Object target)
      ved System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
      ved System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
      ved System.Reflection.RuntimePropertyInfo.GetValue(Object obj, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture)
      ved System.Reflection.RuntimePropertyInfo.GetValue(Object obj, Object[] index)
      ved Commerce.Base.CoreBase`1.Commit() i D:\Projects\VS\Commerce\Base\CoreBase.cs:linje 45
  InnerException:
Avatar billede lasserasch Juniormester
22. januar 2011 - 14:13 #1
Og t er defineret således:

Type t = propertyInfo.PropertyType;
Avatar billede arne_v Ekspert
22. januar 2011 - 14:16 #2
skal:

int value = Convert.ToInt32(propertyInfo.GetValue(propertyInfo, null));

ikke være:

int value = Convert.ToInt32(propertyInfo.GetValue(this, null));

??
Avatar billede lasserasch Juniormester
22. januar 2011 - 14:42 #3
Hej Arne.

Jo selvfølgelig... Tak for hjælpen.
Smid svar, så lukker vi.

Mvh.
Lasse
Avatar billede arne_v Ekspert
22. januar 2011 - 14:49 #4
svar
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