GetType(), GetFields()

0

W c# mogę stosować coś takiego:

foreach (var prop in this.GetType().GetFields())
{
MessageBox.Show(prop.Name);       
} 

Co, jeśli będę chciał zmienić tej zmiennej wartość? Albo, jeżeli to jest jakaś klasa, uruchomić procedurę?
Chciałbym też, żebym mógł z prop, która akurat będzie obiektem funkcji, wyliczyć, ile posiada procedur. Wiem, że trzeba zastosować:

GetType().GetMethods

, ale jak to zrobić dla powyżej wspomnianego prop?

Z góry dziękuję za pomoc.

0
Mojofex napisał(a):

Co, jeśli będę chciał zmienić tej zmiennej wartość?

prop.SetValule(obiekt, wartość);

Albo, jeżeli to jest jakaś klasa, uruchomić procedurę?

Procedurą nazywasz metodę?

var method = prop.FieldType.GetMethod("Nazwa");
method.Invoke(obiekt, new object[] { parametr1, parametr2, ... });

Chciałbym też, żebym mógł z prop, która akurat będzie obiektem funkcji, wyliczyć, ile posiada procedur. Wiem, że trzeba zastosować:

GetType().GetMethods

, ale jak to zrobić dla powyżej wspomnianego prop?

prop.FieldType.GetMethods()
0

Dzięki wielkie!
Jeszcze jedno małe pytanko. Mam już tą metodę z tego obiektu. Teraz powiedzmy, że chcę ją "uruchomić".
Wpisałem:

meth.Invoke(prop, null);
 

Lecz wtedy wywala mi error:
Object does not match target type.

Próbowałem też tego:

meth.Invoke(prop.FieldType, null);
 

, lecz wciąż to samo. Jakieś pomysły?

0

Metody uruchamia się na rzecz obiektu klasy, w której są zdefiniowane. Czy prop to obiekt klasy, która zawiera metodę meth?

Generalnie lepiej czytać dokumentację albo chociaż podpowiedzi IDE niż próbować metodą prób i błędów wstawiać losowe obiekty, aż zadziała.

0

Hej!
Przepraszam, że piszę, ale nadal nie mogę sobie z tym poradzić. Próbowałem coś o tym czytać, ale dalej nie wiem, jak poradzić sobie z tym:

Cannot implicitly convert type 'System.Reflection.MethodInfo' to 'class'
 

Bo myślę, że w tym tkwi mój problem.

0

Po co się babrać z refleksją? Skorzystaj z Roslyn: http://msdn.microsoft.com/en-us/vstudio/roslyn.aspx stworzenie w nim wyliczenia metod,właściwości i innych pierdołek to dosłownie 5 minut. Możesz też łatwo modyfikować kod. Przyjrzyj się temu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1