Пример #1
0
        public override void PreBuildUp(IBuilderContext context)
        {
            if (context.BuildComplete)
            {
                return;
            }
            if (context.Existing != null)
            {
                return;
            }
            var arguments = context.ResolveConstructorScopedArguments().ToArray();

            if (arguments.Length == 0)
            {
                return;
            }

            var existing = _cache.Get(context.BuildKey.Type, new ArgumentsList(arguments));

            if (existing == null || !existing.IsAlive)
            {
                return;
            }

            context.Existing      = existing.Target;
            context.BuildComplete = true;
        }
Пример #2
0
        public override void PostBuildUp(IBuilderContext context)
        {
            var arguments = context.ResolveConstructorScopedArguments().ToArray();

            if (arguments.Length > 0)
            {
                _cache.TryAdd(context.BuildKey.Type, new ArgumentsList(arguments), new WeakReference(context.Existing));
            }
        }