this old code returns a list of fields decorated with an attribute in a method call using reflection
Is there a way to replace it with TypeDescripter or LINQ?
public static FieldInfo[] GetFieldsWithAttribute(Type type, Attribute attr, bool onlyFromType) { System.Reflection.FieldInfo[] infos = type.GetFields(); int cnt = 0; foreach (System.Reflection.FieldInfo info in infos) { if (info.GetCustomAttributes(attr.GetType(), false).Length > 0) { if (onlyFromType && info.DeclaringType != type) continue; cnt++; } } System.Reflection.FieldInfo[] rc = new System.Reflection.FieldInfo[cnt]; // now reset ! cnt = 0; foreach (System.Reflection.FieldInfo info in infos) { if (info.GetCustomAttributes(attr.GetType(), false).Length > 0) { if (onlyFromType && info.DeclaringType != type) continue; rc[cnt++] = info; } } return rc; }
Kumar source share