Поскольку вы, похоже, ищете только public
свойства, Type.GetProperty () может выполнить работу:
if (typeof(Car).GetProperty("Year") != null) {
// The 'Car' type exposes a public 'Year' property.
}
Если вы хотите дополнительно абстрагировать приведенный выше код, вы можете написать метод расширения для Type class
:
public static bool HasPublicProperty(this Type type, string name)
{
return type.GetProperty(name) != null;
}
Тогда используйте это так:
if (typeof(Car).HasPublicProperty("Year")) {
// The 'Car' type exposes a public 'Year' property.
}
Если вы также хотите проверить наличие не public
свойств, вам придется вызвать переопределение Type.GetProperties () , которое принимает аргумент BindingFlags
, и отфильтровать результаты, как Дэвид М. в своем ответе.