Beispiel #1
0
        private IocPropertyMetaData resolveProperty(Field filed)
        {
            var metaData = new IocPropertyMetaData();

            metaData.RelatedType = filed.FieldInfo.ReflectedType;
            metaData.Name        = filed.Name;

            if (filed.Attributes.Contains(typeof(DefaultValueAttribute)))
            {
                metaData.DefaultValue = filed.Attributes.GetAttribute <DefaultValueAttribute>()[0].Value;
            }

            if (filed.Attributes.Contains(typeof(DefaultImplementAttribute)))
            {
                metaData.Impl = filed.Attributes.GetAttribute <DefaultImplementAttribute>()[0].Impl;
            }

            if (filed.Attributes.Contains(typeof(FromConfigAttribute)))
            {
                metaData.ConfigKey = filed.Attributes.GetAttribute <FromConfigAttribute>()[0].ConfigKey;
            }

            metaData.Setter = filed.Setter;

            return(metaData);
        }
Beispiel #2
0
        private void wireProperty(object instance, IocPropertyMetaData property)
        {
            object pInstance;

            if (property.FromConfig)
            {
                var type = property.IsAbstract ?
                           property.HasImpl ? property.Impl : null : null;

                if (type == null)
                {
                    type = IocServiceProvider.Instance.GetImplementation(property.RelatedType);

                    if (type == null)
                    {
                        throw new ImplementationNotFoundException($"");
                    }
                }

                pInstance = JasmineConfigurationProvider.Instance.GetConfig(type, property.ConfigKey);
            }
            else if (property.HasDefaultValue)
            {
                pInstance = property.DefaultValue;
            }
            else if (property.IsAbstract)
            {
                var type = property.HasImpl ?
                           property.Impl : IocServiceProvider.Instance.GetImplementation(property.RelatedType);

                if (type == null)
                {
                    throw new ImplementationNotFoundException($"");
                }

                pInstance = IocServiceProvider.Instance.GetService(type);
            }
            else if (BaseTypes.Base.Contains(property.RelatedType))
            {
                pInstance = JasmineDefaultValueProvider.GetDefaultValue(property.RelatedType);
            }
            else
            {
                pInstance = IocServiceProvider.Instance.GetService(property.RelatedType);
            }

            property.Setter.Invoke(instance, pInstance);
        }