internal CompositeFrameworkRegistration(IRegistrationResolver registrationResolver, TypeMap typeMap, IEnumerable<TypeMap> dependencies, Type castTo, bool disposable)
        {
            NamedAttribute namedAttribute = null;

            this.dependencies = dependencies;
            this.serviceType = typeMap.ServiceType;
            this.concreteType = typeMap.ConcreteType;
            this.registrationResolver = registrationResolver;

            registration = new CompositeRegistration {
                ServiceType = castTo ?? serviceType,
                FactoryType = MakeFactoryType(castTo ?? serviceType)
            };

            SetLifetime();
            registration.Name = typeMap.Name;

            if (typeMap.Name.IsNullOrEmpty() && TryGetNamedAttribute(out namedAttribute)) {
                registration.Name = namedAttribute.Name;
            }

            if (disposable) {
                registration.OwnedByContainer();
            }

            As(concreteType, false);
        }
Exemplo n.º 2
0
        public void Register(TypeMap typeMap, ITypeMapCollection dependencies, bool isComposite = false)
        {
            var name = typeMap.Name ?? typeMap.ServiceType.GetNameFromAttribute() ?? typeMap.ConcreteType.GetNameFromAttribute();

            if (name.IsNotNullOrEmpty()) {
                typeMap = new TypeMap(typeMap.ServiceType, typeMap.ConcreteType, name);
            }

            regisrty.Register(typeMap, dependencies, isComposite);
        }
Exemplo n.º 3
0
 public void AddMixinTypeMap(TypeMap mixinMap)
 {
     this.mixinMap = mixinMap;
 }
Exemplo n.º 4
0
 public override void Register(TypeMap typeMap, ITypeMapCollection dependencies = null, bool isComposite = false)
 {
     RegisterImpl(new ReflectionRegistration(typeMap.ConcreteType, typeMap.ServiceType));
 }
Exemplo n.º 5
0
 public void Register(TypeMap typeMap, ITypeMapCollection dependencies = null, bool isComposite = false)
 {
     registry.Register(typeMap, dependencies);
 }
 public override void Add(TypeMap item)
 {
     Interlocked.CompareExchange(ref mixin, item, null);
 }
Exemplo n.º 7
0
 internal AtomMixinsWeaverStrategy(IAspectTypeDefinition typeDefinition, TypeMap mixin, IEnumerable<IMethodWeaver> methodWeavers, INCopDependencyAwareRegistry registry)
     : base(typeDefinition, new TypeMapSet { mixin }, methodWeavers, registry)
 {
 }
Exemplo n.º 8
0
 public MixinTypeDefinitionWeaver(TypeMap mixinMap)
 {
     this.mixinMap = mixinMap;
     Type = mixinMap.ServiceType;
 }
Exemplo n.º 9
0
 internal CompositeTypeRegistration(IRegistrationResolver registrationResolver, TypeMap typeMap, IEnumerable<TypeMap> dependencies, Type castTo, bool disposable)
     : base(registrationResolver, typeMap, dependencies, castTo, disposable)
 {
 }
Exemplo n.º 10
0
 public virtual void Add(TypeMap item)
 {
     mixinsMap.Add(item);
 }
Exemplo n.º 11
0
 public void Add(TypeMap map)
 {
     maps.Add(map);
 }