/// <summary> /// /// </summary> /// <param name="info"></param> public override void OnMetadataRegistered(IComponentInfo info) { var componentType = info.Implementation; DependencyManager.Refresh(info, Kernel); if (!info.IsGenericType()) { if (info.Activator == ActivatorType.Default) { ResolveConstructorInjection(info, componentType); } if (componentType != null) { ResolveInjectionInfo(info, componentType, componentType.FullName + ":InjectionInfos"); } } reinjectionManager.Reinjection(info.Implementation, Kernel); }
/// <summary> /// 将组件实例所依赖的其它组件都通过容器自动注入进来 /// </summary> /// <param name="instance"></param> /// <returns></returns> public IServiceRegistry Compose(object instance) { Guard.NotNull(instance, "instance"); var info = new ComponentInfo(instance.GetType()); if (!Listner.OnMetadataRegistering(info)) { return(this); } Listner.OnMetadataRegistered(info); var ctx = new ComponentContext(this, null) { Instance = instance, Component = info }; Listner.OnPostCreation(ctx); Listner.OnInitialization(ctx); Listner.OnPostInitialization(ctx); //重组 reinjectionManager.Reinjection(info.Implementation, this); Listner.OnMetadataUnregistered(info); return(this); }