Wyobraź sobie następujące
Typ T ma pole Firma. Podczas wykonywania następującej metody działa idealnie:
Type t = typeof(T);
t.GetProperty("Company")
Jednak z następującą rozmową otrzymuję zero
Type t = typeof(T);
t.GetProperty("company", BindingFlags.IgnoreCase)
Czy ktoś ma pomysł?
c#
reflection
getproperty
bindingflags
Boris Callens
źródło
źródło
Odpowiedzi:
Zastąpiłeś domyślne flagi wyszukiwania, jeśli określisz nowe flagi, musisz podać wszystkie informacje, aby można było znaleźć właściwość. Na przykład:
BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance
źródło
BindingFlags
do nich, nie byłoby sposobu, aby nie używać wartości domyślnych. Tj. Nie byłoby możliwe wykluczeniePublic
właściwości lub wykluczenieInstance
właściwości. Zdecydowali, że albo weźmiesz wartości domyślne, albo je zastąpisz, określając dokładnie to, czego szukasz.Musisz dodać
BindingFlags.Public | BindingFlags.Instance
źródło
Dzięki, to naprawdę pomogło mi dzisiaj w szczypcie. Zapisałem informacje z audytu, ale z niepoprawną obudową nazw nieruchomości. (Kontrola jest wbudowana w warstwę danych). W każdym razie musiałem dodać IgnoreCase jako wiążącą flagę, ale potem nadal nie działało, dopóki mój współpracownik nie znalazł tej odpowiedzi. Wynikowa funkcja:
Jest to część klasy, którą nazywam DotMagic.
źródło