nameof zwracający pełniejszą nazwę

nameof zwracający pełniejszą nazwę
JU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5052
0

Cześć, załóżmy, że mamy takie klasy:

Kopiuj
class SubModel
{
  public string Name {get; set;}
}

class Model
{
  public SubModel {get; set;}
}

Teraz, jeśli użyję operatora nameof:

Kopiuj
nameof(Model.SubModel.Name);

dostanę: Name.

Czy znacie jakąś opcję, żeby otrzymać tutaj: SubModel.Name?

To bardzo wygodne przy bindowaniu, gdzie podaję nazwę property. Bardzo ładnie wtedy się współpracuje z nameof. Jednak w takich wypadkach to nie działa. Jak sobie z tym poradzić? Widziałem w necie kilka różnych dziwnych rozwiązań, które były strzałem z armaty do muchy.

AdamWox
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Jastrzębie-Zdrój
  • Postów: 2181
1
Kopiuj
nameof(Model.SubModel) + "." + nameof(Model.SubModel.Name);
//lub
$"{nameof(Model.SubModel)}.{nameof(Model.SubModel.Name)}"

#edit :D
albo

Kopiuj
typeof(Model.SubModel.Name).FullName;
Pixello
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Podkarpacie
  • Postów: 448
1

Nie wiem, co nazywasz strzałem z armaty do muchy, ale imho najwygodniejszym jest funkcja przyjmująca Expression<Func<Action<T>>>, która przechodzi po MemberExpr i zwraca nazwy Memberów, potem to zjoinować z kropą.

ZK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 274
0

Weź jeszcze raz przeczytaj to co napisałeś i popraw . Ja nie jestem jasnowidzem !
A tak na marginesie polecam kurs C# dla początkujących . Nie będziesz wtedy musiał zadawać takich pytań :))

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.