public CommandsBuilder(Type type) { this.type = type; className = type.Name; fieldsSettings = new PropertyBuilderSettings(); propertiesSettings = new PropertyBuilderSettings(); methodsSettings = new MemberBuilderSettings(); }
T[] GetMembersForSettings <T>(MemberBuilderSettings settings, Func <BindingFlags, T[]> callback) where T : MemberInfo { BindingFlags flags = GetBindingFlagsForSettings(settings); List <T> members = callback(flags).ToList(); members.RemoveAll(x => settings.IsException(x)); return(members.ToArray()); }
public CommandsBuilder(Type type, NotificationsHandler notificationsHandler) { this.type = type; this.notificationsHandler = notificationsHandler; className = type.Name; fieldsSettings = new PropertyBuilderSettings(); propertiesSettings = new PropertyBuilderSettings(); methodsSettings = new MemberBuilderSettings(); }
BindingFlags GetBindingFlagsForSettings(MemberBuilderSettings settings) { BindingFlags flags = BindingFlags.DeclaredOnly; if (settings.accesModiferBindings.HasFlag(AccesModifierBindings.Public)) { flags |= BindingFlags.Public; } if (settings.accesModiferBindings.HasFlag(AccesModifierBindings.NonPublic)) { flags |= BindingFlags.NonPublic; } if (settings.staticBindings.HasFlag(StaticBindings.Instance)) { flags |= BindingFlags.Instance; } if (settings.staticBindings.HasFlag(StaticBindings.Static)) { flags |= BindingFlags.Static; } return(flags); }
MethodInfo[] GetMethods(MemberBuilderSettings settings) { return(GetMembersForSettings(settings, type.GetMethods)); }
PropertyInfo[] GetProperties(MemberBuilderSettings settings) { return(GetMembersForSettings(settings, type.GetProperties)); }