private void RegisterSubgroup(Action <IRegister> action, FilterInfo parentInfo) { var andInfo = new FilterInfo(store.NextId, parentInfo.DiagInfo, parentInfo.FilterToken, parentInfo.Priority); var andGroup = new FilterRegistration(() => new AndGroup(null, andInfo)); store.RegisterFilter(andGroup); action(RegistrationFactory.GetRegistration(store, andInfo.FilterToken, priority)); }
public IFilterToken IsTrue(IDiagInfo diagInfo, Func <T1, bool> filterFunc) { var info = new FilterInfo(store.NextId, diagInfo, groupToken, priority); var filterRegistration = new FilterRegistration(() => new Filter1 <T1>(dependency, filterFunc, info)); store.RegisterFilter(filterRegistration); return(info.FilterToken); }
public IFilterToken And(IDiagInfo diagInfo, Action <IRegister> action) { var info = new FilterInfo(store.NextId, diagInfo, groupToken, priority); var andGroup = new FilterRegistration(() => new AndGroup(dependencies, info)); store.RegisterFilter(andGroup); action(RegistrationFactory.GetRegistration(store, info.FilterToken, priority)); return(info.FilterToken); }
public IFilterToken Xor(IDiagInfo diagInfo, Action <IRegister> action, Action <IRegister> action2) { var info = new FilterInfo(store.NextId, diagInfo, groupToken, priority); var xorGroup = new FilterRegistration(() => new XorGroup(dependencies, info)); store.RegisterFilter(xorGroup); RegisterSubgroup(action, info); RegisterSubgroup(action2, info); return(info.FilterToken); }
public IHaveToken <T> Exists(IDiagInfo diagInfo) { var info = new FilterInfo(store.NextId, diagInfo, groupToken, priority); var dependency = new CollectionDependency(token); var filterReg = new FilterRegistration(() => new ExistsFilter(dependency, info)); store.RegisterCvFilter(filterReg, info.FilterToken); store.RegisterProvider(provider, token); return(new HaveToken <T>(token)); }
internal IHaveToken <T> CreateDefinition(Func <IEnumerable <IResolutionContext>, bool> filterFunc, IDiagInfo diagInfo) { var dependency = new CollectionDependency(token); var info = new FilterInfo(store.NextId, diagInfo, groupToken, priority); var filterReg = new FilterRegistration(() => new Filter1 <IEnumerable <IResolutionContext> >(dependency, filterFunc, info)); store.RegisterCvFilter(filterReg, info.FilterToken); provider.IsNegative = true; store.RegisterProvider(provider, token); return(new HaveToken <T>(token)); }
public IFilterToken Or(IDiagInfo diagInfo, Action <IRegister>[] actions) { var info = new FilterInfo(store.NextId, diagInfo, groupToken, priority); var orGroup = new FilterRegistration(() => new OrGroup(dependencies, info)); store.RegisterFilter(orGroup); foreach (var action in actions) { RegisterSubgroup(action, info); } return(info.FilterToken); }
private List <FilterRegistration <IServerFilter> >?CombineRegistrations(IList <object> metadata) { if (_registrations == null && metadata.Count == 0) { return(null); } List <FilterRegistration <IServerFilter> >?result = null; for (var i = 0; i < metadata.Count; i++) { FilterRegistration <IServerFilter>?registration = null; if (metadata[i] is ServerFilterAttribute filterAttribute) { registration = new FilterRegistration <IServerFilter>(filterAttribute.Order, _ => filterAttribute); } else if (metadata[i] is ServerFilterRegistrationAttribute registrationAttribute) { registration = new FilterRegistration <IServerFilter>(registrationAttribute.Order, registrationAttribute.CreateFilter); } if (registration != null) { if (result == null) { result = new List <FilterRegistration <IServerFilter> >((_registrations?.Count ?? 0) + 4); if (_registrations != null) { result.AddRange(_registrations); } } result.Add(registration); } } return(result ?? _registrations); }
public static void RegisterCvFilter(this TokenStore store, FilterRegistration filter, IFilterToken token) { store.RegisterFilter(filter); store.CvFilters.Add(token); }
public static void RegisterFilter(this TokenStore store, FilterRegistration filter) { store.FilterRegistrations.Add(filter); }