Esempio n. 1
0
        public Provider GetOrCreateAccumulator(FramingPlan plan, Getter getter, ProjectionElement parent, ProjectionElement child, ParameterNames parameters)
        {
            var alreadyCreated =
                _cache.FirstOrDefault(k => k.Child == child &&
                                      k.Parent == parent &&
                                      k.Parameters == parameters);

            if (alreadyCreated != null)
            {
                return(alreadyCreated.Provider);
            }

            var storage = new GroupStorage(FrameNode.InPlanComparer);

            plan.AddTempStorage(storage);
            var pusher    = CreatePusher(storage);
            var checker   = CreateChecker(storage);
            var taker     = CreateGetter(storage);
            var packTaker = CreatePackagerGetter(getter, parameters);

            var acc = new Provider(pusher, checker,
                                   taker, packTaker,
                                   FrameNode.InPlanComparer);
            var node = new FactoryNode
            {
                Parent     = parent,
                Child      = child,
                Parameters = parameters,
                Provider   = acc
            };

            _cache.Add(node);
            return(acc);
        }
Esempio n. 2
0
 public Registration this[string name]
 {
     get { return(_registrations.FirstOrDefault(k => k.ResourceName == name)); }
 }
Esempio n. 3
0
        public Product IndexedFirstOrDefault()
        {
            int id = _id = (_id + 1) % _maxId;

            return(_indexed.FirstOrDefault(p => p.Id == id));
        }