Chciałbym dowiedzieć się więcej o kontekście, w którym jest to potrzebne, ponieważ wydaje mi się, że powinieneś już wiedzieć, z którą usługą korzystasz w akcesorencie. Jeśli jednak musisz, prawdopodobnie możesz użyć MethodBase.GetCurrentMethod() .Name i usunąć wszystko po get_/set_
.
Aktualizacja:
podstawie zmian, chciałbym powiedzieć, że należy użyć dziedziczenia zamiast refleksji. Nie wiem, jakie dane znajdują się w twoim słowniku, ale wydaje mi się, że naprawdę chcesz mieć różne klasy samochodów, np. Sedan, Roadster, Buggy, StationWagon, a nie przechowywać ich w zmiennej lokalnej. Wtedy mielibyśmy implementacje metod, które działają właściwie dla tego typu samochodów. Zamiast dowiedzieć się, jaki rodzaj samochodu posiadasz, a następnie zrobić coś, możesz po prostu wywołać odpowiednią metodę, a obiekt Car robi właściwe rzeczy w zależności od typu.
public interface ICar
{
void Drive(decimal velocity, Orientation orientation);
void Shift(int gear);
...
}
public abstract class Car : ICar
{
public virtual void Drive(decimal velocity, Orientation orientation)
{
...some default implementation...
}
public abstract void Shift(int gear);
...
}
public class AutomaticTransmission : Car
{
public override void Shift(int gear)
{
...some specific implementation...
}
}
public class ManualTransmission : Car
{
public override void Shift(int gear)
{
...some specific implementation...
}
}
+1 Ja też zastanawiałem się o tym podczas wdrażania System.Configuration.ApplicationSettingsBase –