LazyServiceStrategy
using Castle.Core;
using Castle.Core.Internal;
using Castle.MicroKernel.Handlers;
using System;
using System.Linq;
using System.Reflection;
namespace Castle.MicroKernel.Internal
{
    public class LazyServiceStrategy : IGenericServiceStrategy
    {
        public static readonly LazyServiceStrategy Instance = new LazyServiceStrategy();
        private LazyServiceStrategy()
        {
        }
        public bool Supports(Type service, ComponentModel component)
        {
            return !service.GetTypeInfo().GetGenericArguments().Single()
                .IsPrimitiveTypeOrCollection();
        }
    }
}