czy istnieje sposób na uzyskanie wartości właściwości obiektu na podstawie jego nazwy?
Na przykład, jeśli mam:
public class Car : Vehicle
{
public string Make { get; set; }
}
i
var car = new Car { Make="Ford" };
Chcę napisać metodę, w której mogę przekazać nazwę właściwości i zwróci wartość właściwości. to znaczy:
public string GetPropertyValue(string propertyName)
{
return the value of the property;
}
c#
asp.net
reflection
Koder 2
źródło
źródło
Musiałbyś użyć refleksji
Jeśli chcesz być naprawdę fantazyjny, możesz uczynić z tego metodę rozszerzającą:
I wtedy:
źródło
car
Chcesz odbicia
źródło
Prosty przykład (bez zapisu twardego kodu odbicia w kliencie)
źródło
Ponadto inni faceci odpowiadają, jego łatwe do uzyskania wartości właściwości dowolnego obiektu za pomocą metody rozszerzenia, takiej jak:
Wykorzystanie to:
źródło
Rozwijając odpowiedź Adama Rackisa - możemy uczynić metodę rozszerzenia ogólną po prostu w ten sposób:
Jeśli chcesz, możesz też rzucić na to trochę obsługi błędów.
źródło
Aby uniknąć refleksji, możesz skonfigurować słownik z nazwami właściwości jako kluczami i funkcjami w części słownikowej wartości, które zwracają odpowiednie wartości z żądanych właściwości.
źródło