Как я могу получить имя класса, когда я передаю в моем методе универсальный? - PullRequest
31 голосов
/ 29 марта 2010

Мой метод выглядит так:

public string DoObjectProperties<T>(T obj, string text)
{

}

Теперь из метода мне нужно получить строковое значение имени класса, которое я передаю в параметр obj метода.

Так что, если я передаю объект User, мне нужен текст 'user'.

Чтобы получить свойства, которые я использую: typeof(T).GetProperties()

Как я могу получить имя класса?

Ответы [ 3 ]

63 голосов
/ 29 марта 2010

Просто используйте .Name вот так:

typeof(T).Name

Это дает, например, "String", есть также .FullName, который даст "System.String"

4 голосов
/ 29 марта 2010

typeof(T).Name * * 1002

1 голос
/ 03 февраля 2015
typeof(T).Name //would work

Но зависеть от этого и принимать решения на его основе, вероятно, не очень хорошая идея.

Важным правилом здесь является то, что вам, вероятно, следует использовать FullName, когда это возможно.

Например, в операторах переключения, в блоках if else или в словарных ключах.

Имя класса - не идеальная вещь, от которой можно зависеть иметь одинаковое имя класса в разных пространствах имен. NamespaceA.String и NamespaceB.String вполне возможны ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...