2013-05-12 31 views
5

.Net 4.5 ma PropertyInfo.GetMethod jako właściwość na klasie PropertyInfo. Czy robi on coś innego niż metoda PropertyInfo.GetGetMethod? Strona dokumentacji jest praktycznie pusta. Jedyną różnicą jaką mogę znaleźć jest GetGetMethod domyślnie zwraca tylko publiczny getter, podczas gdy GetMethod zwraca nawet niepubliczny getter (to samo osiąga GetGetMethod(true)).Różnica między metodą GetGetMethod a właściwością GetMethod?

Podobnie jest metoda GetSetMethod i SetMethod w .NET 4.5. Dlaczego został wprowadzony w .NET?

Odpowiedz

11

Nie ma różnicy. Obiekt GetMethod dzwoni pod numer w celu pobrania obiektu pobierającego. Oto co ILSpy opowiada mi o realizacji nieruchomości:

// System.Reflection.PropertyInfo 
[__DynamicallyInvokable] 
public virtual MethodInfo GetMethod 
{ 
    [__DynamicallyInvokable, TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")] 
    get 
    { 
     return this.GetGetMethod(true); 
    } 
} 

Obiekt GetMethod jest po prostu łatwiejsze w użyciu, ponieważ nie odnoszą się na parametrze.

Nigdy nie myślałem, że używam słowa dostać tak wiele razy w jednym zdaniu!

+6

+1 za rozbawienie mnie za pomocą zdania "Właściwość GetMethod wywołuje GetGetMethod, aby uzyskać gettera." – theyetiman