Используйте имя строки для доступа к свойствам класса - PullRequest
1 голос
/ 20 октября 2011

Как я могу использовать строковую переменную, чтобы получить свойства, связанные с данным классом? Если я использую имя класса, как показано ниже: -

  PropertyInfo[] propertyInfo = typeof(Treblet).GetProperties();    

где Treblet - имя класса, тогда я могу получить количество свойств для класса. Но как я могу заменить имя класса строковой переменной? Спасибо за все и любую помощь.

Ответы [ 2 ]

1 голос
/ 20 октября 2011
string typeToSearchFor = "Treblet";
PropertyInfo[] propertyInfo = 
     Assembly.GetExecutingAssembly().GetTypes().Where(
         t => t.Name == typeToSearchFor).FirstOrDefault().GetProperties();

Это должно сработать. Вам нужно будет найти сборку, в которой определен тип. Для простоты я только что искал исполняющую сборку.

Примечание. Имя - это просто имя типа, а FullName - имя полностью распределенного пространства имен.

1 голос
/ 20 октября 2011

Вам нужно сделать шаг назад - проблема не в получении свойств, а в получении значения Type для вызова GetProperties. Для этого вы хотите Assembly.GetType(string) или Type.GetType(string). В обоих случаях вам нужно имя с указанием пространства имен, например, System.Guid, а не просто Guid.

Если вы используете Type.GetType(string) с просто именем, квалифицированным для пространства имен, оно будет проверять только mscorlib и вызывающую сборку - вам потребуется имя с квалификацией сборки, чтобы найти тип в другом сборка.

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