private List <Types.MetaDataInfo> getDynamicEvents(Assembly assembly) { List <Types.MetaDataInfo> result = new List <Types.MetaDataInfo>(); foreach (Type t in assembly.GetTypes()) { foreach (MethodInfo method in t.GetMethods(BindingFlags.FlattenHierarchy | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)) { Types.MetaDataInfo m = new Types.MetaDataInfo(); foreach (Object Attr in method.GetCustomAttributes(false)) { if (Attr.GetType().Name.ToLower().StartsWith("eventhandler")) { m.Name = method.Name; } if (Attr.GetType().Name.ToLower().StartsWith("description")) { m.Description = Attr.ToString(); } } if (m.Name != null && m.Name.Length > 2) { if (m.Name.Substring(0, 2).ToLower() == "on") { m.Name = m.Name.Substring(2); } result.Add(m); } } } return(result); }
private List <Types.MetaDataInfo> getDynamicVariables(Assembly assembly) { List <Types.MetaDataInfo> result = new List <Types.MetaDataInfo>(); foreach (Type t in assembly.GetTypes()) { foreach (FieldInfo property in t.GetFields(BindingFlags.FlattenHierarchy | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)) { Types.MetaDataInfo m = new Types.MetaDataInfo(); foreach (Object Attr in property.GetCustomAttributes(false)) { if (Attr.GetType().Name.ToLower().StartsWith("output")) { m.Name = property.Name; } if (Attr.GetType().Name.ToLower().StartsWith("units")) { m.Units = Attr.ToString(); } if (Attr.GetType().Name.ToLower().StartsWith("description")) { m.Description = Attr.ToString(); } //m.IsArray = false; FIXME } if (m.Name != null) { result.Add(m); } } foreach (var method in t.GetProperties(BindingFlags.FlattenHierarchy | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)) { Types.MetaDataInfo m = new Types.MetaDataInfo(); foreach (Object Attr in method.GetCustomAttributes(false)) { if (Attr.GetType().Name.ToLower().StartsWith("output")) { m.Name = method.Name; } if (Attr.GetType().Name.ToLower().StartsWith("description")) { m.Description = Attr.ToString(); } } if (m.Name != null) { result.Add(m); } } } #if false //FIXME work on this... var methods = assembly.GetTypes() .SelectMany(typ => typ.GetMethods(BindingFlags.FlattenHierarchy | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)) .Where(m => m.GetCustomAttributes(false).Length > 0) .ToArray(); #endif return(result); }