Exemplo n.º 1
0
        public static ConstructorInjection InspectConstructor(IComponentInfo ctx, IKernel kernel, ConstructorInfo ctor)
        {
            var item = new ConstructorInjection(ctor.GetParameters().Select(p => AttributeProviderInspector.InspectParameter(ctx, kernel, p)).ToArray())
            {
                Member            = ctor,
                Creator           = ctor.GetCreator(),
                IsMarkedInjection = ctor.HasAttribute <InjectAttribute>(false),
            };

            return(item);
        }
Exemplo n.º 2
0
        private static IMemberInjection CreateMethodInjection(IComponentInfo ctx, IKernel kernel, MethodInfo m, InjectAttribute att)
        {
            var ps = m.GetParameters();
            List <IDependency> dependencyList = new List <IDependency>(ps.Length);

            foreach (var p in ps)
            {
                if (p.ParameterType.IsByRef || p.IsRetval || p.IsOut)
                {
                    return(null);
                }
                dependencyList.Add(AttributeProviderInspector.InspectParameter(ctx, kernel, p));
            }

            var id        = att != null ? att.Id : string.Empty;
            var injection = new MethodInjection(dependencyList.ToArray())//方法注入元数据
            {
                Member      = m,
                Method      = DynamicMethodFactory.GetProc(m),
                Reinjection = att.Reinjection,
            };

            return(injection);
        }