Получите имя предоставленного универсального типа в универсальном интерфейсе

#c#

Вопрос:

Предположим, что у вас есть следующий интерфейс:

 public interface ITraceManagerlt;TManagergt; where TManager : class  {  string Name { get; }  void DisplayName();  }  

Конкретный класс, реализующий этот интерфейс, выглядит следующим образом:

 public sealed class TraceManagerlt;TManagergt; : ITraceManagerlt;TManagergt; where TManager : class  {  public string Name =gt; $"Foo Bar - {nameof(TManager)}";    public void DisplayName()  {  Console.WriteLine($"{Name}");   }  }  

Я могу зарегистрировать эту зависимость с помощью конструктора следующим образом:

 readonly ITraceManagerlt;LoginManagergt; _traceManager; public LoginManager(ITraceManagerlt;LoginManagergt; traceManager) {  _traceManager = traceManager; }  

при вызове _traceManager.DisplayName() метода я ожидал Name бы, что свойство сохранит значение nameof(LoginManager) , так как это указанный тип. Однако вместо этого значение Name свойства равно TManager .

Что я делаю не так?

Комментарии:

1. Ты хочешь typeof(TManager).Name . nameof возвращает имя универсального аргумента , т. е. TManager не имя предоставленного типа.

2. @JohnathanBarclay Спасибо тебе! Это сделало свое дело. Пожалуйста, не стесняйтесь добавлять свой комментарий в качестве ответа, и я отмечу его как принятый ответ.