예제 #1
0
        /// <summary>
        /// Creates this object builder
        /// </summary>
        /// <param name="type"></param>
        public ObjectBuilder(IEngineConfigurationType type)
        {
            InnerType = type.RegisteredType;

            if (type.GetFactory() != null)
            {
                mFactory = type.GetFactory().Build();
            }

            type.GetRegisteredMembers()
                .ToList()
                .ForEach(x =>
                             {
                                 List<IDatasource> sources = x.GetDatasources().Select(s => s.Build()).ToList();

                                 if (x.Member.IsField)
                                 {
                                     if (sources.Count == 0)
                                     {
                                         return;
                                     }

                                     AddAction(new ObjectFieldSetFromSourceAction(
                                                   (EngineTypeFieldMember) x.Member,
                                                   sources.First()));
                                 }
                                 else if (x.Member.IsProperty)
                                 {
                                     if (sources.Count == 0)
                                     {
                                         return;
                                     }

                                     AddAction(new ObjectPropertySetFromSourceAction(
                                                   (EngineTypePropertyMember) x.Member,
                                                   sources.First()));
                                 }
                                 else if (x.Member.IsMethod)
                                 {
                                     AddAction(new ObjectMethodInvokeFromSourceAction(
                                                   (EngineTypeMethodMember) x.Member,
                                                   sources
                                                   ));
                                 }
                             });
        }
예제 #2
0
        /// <summary>
        /// Creates this object builder
        /// </summary>
        /// <param name="type"></param>
        public ObjectBuilder(IEngineConfigurationType type)
        {
            this.InnerType = type.RegisteredType;

            if (type.GetFactory() != null)
            {
                mFactory = type.GetFactory().Build();
            }

            type.GetRegisteredMembers()
            .ToList()
            .ForEach(x =>
            {
                var sources = x.GetDatasources().Select(s => s.Build()).ToList();

                if (x.Member.IsField)
                {
                    if (sources.Count == 0)
                    {
                        return;
                    }

                    this.AddAction(new ObjectFieldSetFromSourceAction(
                                       (EngineTypeFieldMember)x.Member,
                                       sources.First()));
                }
                else if (x.Member.IsProperty)
                {
                    if (sources.Count == 0)
                    {
                        return;
                    }

                    this.AddAction(new ObjectPropertySetFromSourceAction(
                                       (EngineTypePropertyMember)x.Member,
                                       sources.First()));
                }
                else if (x.Member.IsMethod)
                {
                    this.AddAction(new ObjectMethodInvokeFromSourceAction(
                                       (EngineTypeMethodMember)x.Member,
                                       sources
                                       ));
                }
            });
        }
예제 #3
0
        public override void Apply(IEngineConfigurationType type)
        {
            var typeProvider =
                mConfigurationProvider.GetConfigurationTypes().Where(x => x.GetConfigurationType() == type.RegisteredType)
                .FirstOrDefault();

            if (typeProvider != null && typeProvider.GetFactory() != null)
            {
                type.SetFactory(typeProvider.GetFactory());
            }
            else if (type.GetFactory() == null)
            {
                // Activator.CreateInstance as a last resort
                Type fallbackType = typeof(FallbackObjectFactory <>).MakeGenericType(type.RegisteredType);
                type.SetFactory(new DatasourceFactory(fallbackType));
            }
        }
        public override void Apply(IEngineConfigurationType type)
        {
            var typeProvider =
                mConfigurationProvider.GetConfigurationTypes().Where(x => x.GetConfigurationType() == type.RegisteredType)
                    .FirstOrDefault();

            if(typeProvider != null && typeProvider.GetFactory() != null)
            {
                type.SetFactory(typeProvider.GetFactory());
            }
            else if (type.GetFactory() == null)
            {
                // Activator.CreateInstance as a last resort
                Type fallbackType = typeof (FallbackObjectFactory<>).MakeGenericType(type.RegisteredType);
                type.SetFactory(new DatasourceFactory(fallbackType));
            }
        }