Exemple #1
0
        public void Inject(IComponentContext ctx)
        {
            if (IsMatch)
            {
                if (refMgr.Enabled)
                {
                    List <object> references = new List <object>();
                    var           args       = Dependencies.Select(p => PopulateArgument(references, p)).ToArray();

                    ctx.Instance = Creator(args);

                    refMgr.RegisterHandle(ctx.Instance, ctx.Kernel, ctx.Component);

                    foreach (var @ref in references)
                    {
                        refMgr.RegisterReference(ctx.Instance, @ref);
                    }
                }
                else
                {
                    ctx.Instance = Creator(Dependencies.Select(p => p.ValueProvider()).ToArray());
                }
            }
        }
Exemple #2
0
        public static void RegisterCollectionLazyAndReferred(this ICollectonLazy collectionLazy, object owner)
        {
            Action <object> onValueCreated = null;

            onValueCreated = o =>
            {
                var values = (o as IEnumerable).Cast <object>().ToArray();
                var length = values.Length;
                ReferenceManager refMgr = ReferenceManager.Instance;
                for (int i = 0; i < length; i++)
                {
                    refMgr.RegisterHandle(values[i], collectionLazy.Kernels[i], collectionLazy.Components[i]);
                    refMgr.RegisterReference(owner, values[i]);
                }
                collectionLazy.ValueCreated -= onValueCreated;
            };
            collectionLazy.ValueCreated += onValueCreated;
        }