public void Describe(DescribeSortCriterionContext describe) { var builder = new BindingBuilder(); foreach (var bindingProvider in _bindingProviders) { bindingProvider.GetMemberBindings(builder); } var groupedMembers = builder.Build().GroupBy(b => b.Property.DeclaringType).ToDictionary(b => b.Key, b => b); foreach (var typeMembers in groupedMembers.Keys) { var descriptor = describe.For(typeMembers.Name, new LocalizedString(typeMembers.Name.CamelFriendly()), T("Members for {0}", typeMembers.Name)); foreach (var member in groupedMembers[typeMembers]) { var closureMember = member; descriptor.Element(member.Property.Name, member.DisplayName, member.Description, context => ApplyFilter(context, closureMember.Property), context => DisplaySortCriterion(context, closureMember.DisplayName.Text), SortCriterionFormProvider.FormName ); } } }
/// <inheritdoc/> public IBindingCollection DiscoverAndSetupBindings() { _logger.Trace("Discover and setup bindings"); var bindingCollections = new ConcurrentBag <IBindingCollection>(); var allTypes = _typeFinder.All; _logger.Trace("Find all binding conventions"); var conventionTypes = _typeFinder.FindMultiple <IBindingConvention>(); _scheduler.PerformForEach(conventionTypes, (Action <Type>)(conventionType => { _logger.Trace((string)$"Handle convention type {conventionType.AssemblyQualifiedName}"); var convention = _bootContainer.Get(conventionType) as IBindingConvention; var servicesToResolve = allTypes.Where(service => convention.CanResolve(service)); var bindings = new ConcurrentBag <Binding>(); _scheduler.PerformForEach(servicesToResolve, service => { var bindingBuilder = new BindingBuilder(Binding.For(service)); convention.Resolve(service, bindingBuilder); bindings.Add(bindingBuilder.Build()); }); var bindingCollection = new BindingCollection(bindings); bindingCollections.Add(bindingCollection); })); var aggregatedBindingCollection = new BindingCollection(bindingCollections.ToArray()); return(aggregatedBindingCollection); }
static Binding Bind(Type type, object target) { var containerBindingBuilder = new BindingBuilder(Binding.For(type)); var scope = containerBindingBuilder.To(target); scope.Singleton(); return(containerBindingBuilder.Build()); }
/// <summary> /// Bind using a builder for fluent configuration /// </summary> /// <param name="container">container to act on</param> /// <param name="builderAction">configuration handler</param> /// <typeparam name="TFrom">Type to bind from</typeparam> /// <typeparam name="TTo">Type to bind to</typeparam> public static void Bind <TFrom, TTo>(this IDependencyContainer container, Action <BindingBuilder> builderAction) where TTo : TFrom { var builder = new BindingBuilder(); builderAction(builder); var config = builder.Build(); container.Bind <TFrom, TTo>(config); }
/// <summary> /// Bind using a builder for fluent configuration /// </summary> /// <param name="container">container to act on</param> /// <param name="builderAction">configuration handler</param> /// <typeparam name="T">Type to bind to</typeparam> public static void Bind <T>(this IDependencyContainer container, Action <BindingBuilder <T> > builderAction) { var builder = new BindingBuilder <T>(); builderAction(builder); var config = builder.Build(); container.Bind <T>(config); }
protected override BindingConfiguration ConfigureBindings(BindingBuilder builder) { ConfigureLikeBindings(builder); ConfigureCommentBindings(builder); ConfigureGroupBindings(builder); ConfigureMediaBindings(builder); return(builder.Build()); }
static Binding Bind(Type type, Func <object> target, bool singleton = false) { var containerBindingBuilder = new BindingBuilder(Binding.For(type)); var scope = containerBindingBuilder.To(target); if (singleton) { scope.Singleton(); } return(containerBindingBuilder.Build()); }
public static void Bind <TType>(this IDependencyContainer container, Action <BindingBuilder <TType> > configurator) { if (null == container) { throw new ArgumentNullException(nameof(container)); } var builder = new BindingBuilder <TType>(); configurator.Invoke(builder); container.Bind <TType>(builder.Build()); }
protected override BindingConfiguration ConfigureBindings(BindingBuilder builder) { ConfigureLikeBindings(builder); ConfigureCommentBindings(builder); ConfigureGroupBindings(builder); ConfigureMediaBindings(builder); builder.HandleCommand <MentionCommand>() .WithHandle <MentionHandle>(); return(builder.Build()); }
private Dictionary <Type, IGrouping <Type, BindingItem> > GetMemberGroups() { if (_groupsDictionary == null) { // use MemberBinding to get the Record var builder = new BindingBuilder(); foreach (var bindingProvider in _bindingProviders) { bindingProvider.GetMemberBindings(builder); } _groupsDictionary = builder.Build() .GroupBy(b => b.Property.DeclaringType) .ToDictionary(b => b.Key, b => b); } return(_groupsDictionary); }
public override void Build(BuildContext context) { var memberBindings = new XElement("MemberBindings"); context.RecipeDocument.Element("Orchard").Add(memberBindings); var bindingBuilder = new BindingBuilder(); _memberBindingProvider.GetMemberBindings(bindingBuilder); foreach (var bindingItem in bindingBuilder.Build()) { var declaringType = bindingItem.Property.DeclaringType; var memberBinding = new XElement("MemberBinding", new XAttribute("Type", declaringType.FullName), new XAttribute("Member", bindingItem.Property.Name), new XAttribute("Description", bindingItem.Description), new XAttribute("DisplayName", bindingItem.DisplayName)); memberBindings.Add(memberBinding); } }
void HandleConvention( Type conventionType, IEnumerable <Type> allTypes, ConcurrentBag <IBindingCollection> bindingCollections) { _logger.Trace("Handle convention type {conventionType}", conventionType.AssemblyQualifiedName); var convention = _bootContainer.Get(conventionType) as IBindingConvention; var servicesToResolve = allTypes.Where(service => convention.CanResolve(service)); var bindings = new ConcurrentBag <Binding>(); _scheduler.PerformForEach(servicesToResolve, service => { var bindingBuilder = new BindingBuilder(Binding.For(service)); convention.Resolve(service, bindingBuilder); bindings.Add(bindingBuilder.Build()); }); var bindingCollection = new BindingCollection(bindings); bindingCollections.Add(bindingCollection); }