Имеется экземпляр объекта и строка с текстовым представлением "адреса" свойства объекта. Например:
public class Person {
public string Name { get; set; }
public DateTime BirthDate { get; set; }
public Address BirthPlace { get; set; }
}
public class Address {
public string Country { get; set; }
public string City { get; set; }
public string Street { get; set; }
public string Nr { get; set; }
}
Как получить тип значения свойства используя его "адрес"?
Например такой: BirthPlace.Country
?
С помощью рефлексии можно сделать так:
public Type GetTypeOfProperty(Type type, string propName, char delimiter = '.')
{
const BindingFlags bindingFlags = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public;
Type propertyType = null;
if (propName.Contains(delimiter.ToString()))
{
string[] propNames = propName.Split(new char[] { delimiter }, 2);
propertyType = type.GetProperty(propNames[0], bindingFlags)?.PropertyType;
return GetTypeOfProperty(propertyType, propNames[1]);
}
else
{
propertyType = type.GetProperty(propName, bindingFlags)?.PropertyType;
}
return propertyType;
}
// Использование:
// string propAddress = "BirthPlace.Country";
// Type birthPlaceType = GetTypeOfProperty(typeof(Person), propAddress);
"Поиграться" можно здесь.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Я подключил базу данных через EFВсё хорошо я попробовал поработать с ней
Есть класс, который что-то делает и я хочу дать пользователю возможность в некоторых местах повлиять на дальнейшую работу этого класса
Для чего именно служат конструкторы в C# Зачем нужно их создавать? Дайте наглядный пример, пожалуйстаВозможно вопрос глупый, но я не понимаю...
Не понимаю с чём может быть связана эта ошибка :