Учитывая худший сценарий;
если вы используете отражение над всеми свойствами в классе ...
public List<PropertyInfo> FindProperties(Type TargetType) {
MemberInfo[] _FoundProperties = TargetType.FindMembers(MemberTypes.Property,
BindingFlags.Instance | BindingFlags.Public, new
MemberFilter(MemberFilterReturnTrue), TargetType);
List<PropertyInfo> _MatchingProperties = new List<PropertyInfo>();
foreach (MemberInfo _FoundMember in _FoundProperties) {
_MatchingProperties.Add((PropertyInfo)_FoundMember); }
return _MatchingProperties;
}
IInterface - это некоторый универсальный интерфейс
public void doSomthingToAllPropertiesInDerivedClassThatImplementIInterface() {
IList<PropertyInfo> _Properties = FindProperties(this.GetType());
foreach (PropertyInfo _Property in _Properties)
{
if (_Property.PropertyType.GetInterfaces().Contains(typeof(IInterface)))
{
if ((IInterface)_Property.GetValue(this, null) != null)
{
((IInterface)_Property.GetValue(this, null)).SomeIInterfaceMethod();
}
}
}
}