Есть ли способ посредством отражения получить тип свойства без создания экземпляра класса?
У меня есть две строковые переменные: одна содержит имя класса, а другая - имя свойства. Затем мне нужно получить тип свойства (int, string и т. д.). Я не хочу создавать экземпляр класса. Какие-либо предложения? Спасибо
Пробовал (ниже), но с использованием typeof () говорит, что MyClassVariable - это переменная, используемая как тип. У меня тоже нет экземпляра класса.
typeof(MyClassVariable).GetProperty(MyPropertyVariable).PropertyType.ToString();
Начните с typeof(mytype) вместо myobj.GetType().
Type.GetType, Type.GetProperty. Ни один из них не «создает экземпляр класса», но вам, конечно, нужен экземпляр Type.





var typeString = "System.String";
var propertyString = "Length";
var type = Type.GetType(typeString).GetProperty(propertyString).PropertyType.Name;
Console.WriteLine($"{typeString}.{propertyString} is of type {type}");
Печать:
System.String.Length is of type Int32
Я могу воспроизвести ваш пример, и он отлично работает. Когда я пробую это с моим классом, GetType возвращает null. Я использую AssemblyQualifiedName для класса. Должен ли я использовать что-нибудь еще? Спасибо за помощь!
AssemblyQualifiedName должен работать, если на вашу сборку есть ссылка.
эээ ... да, отражение? Вы уже добавили тег. Что случилось, когда вы попробовали? Где вы застряли, чем мы можем вам помочь?