nameof zwracający pełniejszą nazwę

0

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

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

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

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

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.

1
nameof(Model.SubModel) + "." + nameof(Model.SubModel.Name);
//lub
$"{nameof(Model.SubModel)}.{nameof(Model.SubModel.Name)}"

#edit :D
albo

typeof(Model.SubModel.Name).FullName;
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ą.

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ń :))

1 użytkowników online, w tym zalogowanych: 0, gości: 1