protected virtual IEnumerable <IEngineConfigurationTypeMember> GetAllTypeHierarchyMembers(IEngineConfiguration baseConfiguration, IEngineConfigurationType sourceType) { Stack <IEngineConfigurationType> configurationStack = new Stack <IEngineConfigurationType>(); Type currentType = sourceType.RegisteredType; IEngineConfigurationType currentTypeConfiguration = null; // Get all the base types into a stack, where the base-most type is at the top while (currentType != null) { currentTypeConfiguration = baseConfiguration.GetRegisteredType(currentType); if (currentTypeConfiguration != null) { configurationStack.Push(currentTypeConfiguration); } currentType = currentType.BaseType; } // Put all the implemented interfaces on top of that foreach (var interfaceType in sourceType.RegisteredType.GetInterfaces()) { currentTypeConfiguration = baseConfiguration.GetRegisteredType(interfaceType); if (currentTypeConfiguration != null) { configurationStack.Push(currentTypeConfiguration); } } var membersToApply = (from typeConfig in configurationStack from memberConfig in typeConfig.GetRegisteredMembers() select memberConfig).ToArray(); return(membersToApply); }
private void ApplyToType(IEngineConfigurationType type) { foreach (var member in type.GetRegisteredMembers()) { ApplyToTypeMember(member); } }
public override void Apply(IEngineConfigurationType type) { mConventionProvider.Find<ITypeConvention>() .Select(t => (ITypeConvention)Activator.CreateInstance(t)) .ToList() .ForEach(x => x.Apply(new TypeConventionContext(type))); }
protected virtual IEnumerable<IEngineConfigurationTypeMember> GetAllTypeHierarchyMembers(IEngineConfiguration baseConfiguration, IEngineConfigurationType sourceType) { Stack<IEngineConfigurationType> configurationStack = new Stack<IEngineConfigurationType>(); Type currentType = sourceType.RegisteredType; IEngineConfigurationType currentTypeConfiguration = null; // Get all the base types into a stack, where the base-most type is at the top while (currentType != null) { currentTypeConfiguration = baseConfiguration.GetRegisteredType(currentType); if (currentTypeConfiguration != null) { configurationStack.Push(currentTypeConfiguration); } currentType = currentType.BaseType; } // Put all the implemented interfaces on top of that foreach (var interfaceType in sourceType.RegisteredType.GetInterfaces()) { currentTypeConfiguration = baseConfiguration.GetRegisteredType(interfaceType); if (currentTypeConfiguration != null) { configurationStack.Push(currentTypeConfiguration); } } var membersToApply = (from typeConfig in configurationStack from memberConfig in typeConfig.GetRegisteredMembers() select memberConfig).ToArray(); return membersToApply; }
public override void Apply(IEngineConfigurationType type) { mConventionProvider.Find <ITypeConvention>() .Select(t => (ITypeConvention)Activator.CreateInstance(t)) .ToList() .ForEach(x => x.Apply(new TypeConventionContext(type))); }
private void ApplyToType(IEngineConfigurationType type) { foreach (IEngineConfigurationTypeMember member in type.GetRegisteredMembers()) { ApplyToTypeMember(member); } }
void ITypeRegistrationAction.Apply(IEngineConfigurationType type) { Apply(type); if (NextAction != null) { NextAction.Apply(type); } }
void ITypeRegistrationAction.Apply(IEngineConfigurationType type) { this.Apply(type); if (NextAction != null) { NextAction.Apply(type); } }
private IObjectBuilder CreateBuilderForType(Type searchType) { EnsureTypeExists(searchType); IEngineConfigurationType type = mConfiguration.GetRegisteredType(searchType); var builder = new ObjectBuilder(type); mObjectBuilders.Add(builder); return(builder); }
public void Setup() { this.Builder.Conventions(x => { x.Register<TestTypeConvention>(); }); this.Builder.Include<TestTypeClass>(); mConfiguration = new EngineConfigurationFactory().Create(this.Builder, this.Builder.ConventionProvider); mType = mConfiguration.GetRegisteredType(typeof(TestTypeClass)); }
public void Setup() { this.Builder.Conventions(x => { x.Register <TestTypeConvention>(); }); this.Builder.Include <TestTypeClass>(); mConfiguration = new EngineConfigurationFactory().Create(this.Builder, this.Builder.ConventionProvider); mType = mConfiguration.GetRegisteredType(typeof(TestTypeClass)); }
protected virtual void ApplyBaseRulesToType(IEngineConfigurationProviderLoaderContext context, IEngineConfigurationType type) { IEnumerable<IEngineConfigurationTypeMember> membersToApply = GetAllTypeHierarchyMembers(context.Configuration, type); foreach (var existingMemberConfig in membersToApply) { IEngineConfigurationTypeMember currentMemberConfig = type.GetRegisteredMember(existingMemberConfig.Member); if (currentMemberConfig == null) { type.RegisterMember(existingMemberConfig.Member); currentMemberConfig = type.GetRegisteredMember(existingMemberConfig.Member); currentMemberConfig.SetDatasources(existingMemberConfig.GetDatasources()); } } }
public void Setup() { this.Builder.Conventions(x => { x.Register<TestPropertyConvention>(); }); this.Builder.Include<TestPropertyClass>() .Setup(x => x.Test).Default() .Setup(x => x.TestIgnore); mConfiguration = new EngineConfigurationFactory().Create(this.Builder, this.Builder.ConventionProvider); mType = mConfiguration.GetRegisteredType(typeof(TestPropertyClass)); mTestProperty = mType.GetRegisteredMembers().Where(x => x.Member.Name == "Test").Single(); mTestIgnoreProperty = mType.GetRegisteredMembers().Where(x => x.Member.Name == "TestIgnore").Single(); }
public void Setup() { this.Builder.Conventions(x => { x.Register <TestFieldConvention>(); }); this.Builder.Include <TestFieldClass>() .Setup(x => x.Test).Default() .Setup(x => x.TestIgnore); mConfiguration = new EngineConfigurationFactory().Create(this.Builder, this.Builder.ConventionProvider); mType = mConfiguration.GetRegisteredType(typeof(TestFieldClass)); mTestField = mType.GetRegisteredMembers().Where(x => x.Member.Name == "Test").Single(); mTestIgnoreField = mType.GetRegisteredMembers().Where(x => x.Member.Name == "TestIgnore").Single(); }
private void ApplyToType(IEngineConfigurationType type) { // Create the dependency stack IEnumerable<IEngineConfigurationTypeMember> membersToApply = GetAllTypeHierarchyMembers(mConfiguration, type); foreach (var existingMemberConfig in membersToApply) { IEngineConfigurationTypeMember currentMemberConfig = type.GetRegisteredMember(existingMemberConfig.Member); if (currentMemberConfig == null) { type.RegisterMember(existingMemberConfig.Member); currentMemberConfig = type.GetRegisteredMember(existingMemberConfig.Member); currentMemberConfig.SetDatasources(existingMemberConfig.GetDatasources()); } } }
private void ApplyToType(IEngineConfigurationType type) { var typeProviders = mConfigurationProvider.GetConfigurationTypes().Where(x => x.GetConfigurationType() == type.RegisteredType); foreach (var typeProvider in typeProviders) { foreach (var member in typeProvider.GetConfigurationMembers()) { EngineTypeMember typeMember = member.GetConfigurationMember(); if (type.GetRegisteredMember(typeMember) == null) { type.RegisterMember(typeMember); } } } }
private void ApplyToType(IEngineConfigurationType type) { // Create the dependency stack IEnumerable <IEngineConfigurationTypeMember> membersToApply = GetAllTypeHierarchyMembers(mConfiguration, type); foreach (var existingMemberConfig in membersToApply) { IEngineConfigurationTypeMember currentMemberConfig = type.GetRegisteredMember(existingMemberConfig.Member); if (currentMemberConfig == null) { type.RegisterMember(existingMemberConfig.Member); currentMemberConfig = type.GetRegisteredMember(existingMemberConfig.Member); currentMemberConfig.SetDatasources(existingMemberConfig.GetDatasources()); } } }
public void SetupObjects() { this.Builder.Include <SimpleMethodClass>() .Invoke(x => x.SetSomething("Literal")) .Invoke(x => x.SetSomething( Use.Source <String, FirstNameSource>(), Use.Source <String, LastNameSource>())); Configuration = new EngineConfigurationFactory().Create(this.Builder, this.Builder.ConventionProvider); // Get some info for the tests mEngineConfigurationType = Configuration.GetRegisteredType(typeof(SimpleMethodClass)); mSingleArgMethod = (EngineTypeMethodMember)ReflectionHelper.GetMember( typeof(SimpleMethodClass).GetMethod("SetSomething", new Type[] { typeof(string) })); mDoubleArgMethod = (EngineTypeMethodMember)ReflectionHelper.GetMember( typeof(SimpleMethodClass).GetMethod("SetSomething", new Type[] { typeof(string), typeof(string) })); }
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)); } }
/// <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 )); } }); }
/// <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 )); } }); }
private void ApplyToType(IEngineConfigurationType type) { var typeProviders = mConfigurationProvider.GetConfigurationTypes() .Where(x => x.GetConfigurationType() == type.RegisteredType); foreach (var typeProvider in typeProviders) { foreach (var memberProvider in typeProvider.GetConfigurationMembers()) { EngineTypeMember typeMember = memberProvider.GetConfigurationMember(); // Get the member var configuredMember = type.GetRegisteredMember(typeMember); // Set the action on that member if a datasource has been set explicitly for this member var datasources = memberProvider.GetDatasources(); if (datasources.Count() > 0) { configuredMember.SetDatasources(datasources); } } } }
public override void Apply(IEngineConfigurationType type) { ApplyToType(type); }
public abstract void Apply(IEngineConfigurationType type);
public TypeConventionContext(IEngineConfigurationType type) { mType = type; }
public void SetupObjects() { this.Builder.Include<SimpleMethodClass>() .Invoke(x=>x.SetSomething("Literal")) .Invoke(x=>x.SetSomething( Use.Source<String, FirstNameSource>(), Use.Source<String, LastNameSource>())); Configuration = new EngineConfigurationFactory().Create(this.Builder, this.Builder.ConventionProvider); // Get some info for the tests mEngineConfigurationType = Configuration.GetRegisteredType(typeof(SimpleMethodClass)); mSingleArgMethod = (EngineTypeMethodMember)ReflectionHelper.GetMember( typeof(SimpleMethodClass).GetMethod("SetSomething", new Type[] { typeof(string) })); mDoubleArgMethod = (EngineTypeMethodMember)ReflectionHelper.GetMember( typeof(SimpleMethodClass).GetMethod("SetSomething", new Type[] { typeof(string), typeof(string) })); }
protected virtual void ApplyBaseRulesToType(IEngineConfigurationProviderLoaderContext context, IEngineConfigurationType type) { IEnumerable <IEngineConfigurationTypeMember> membersToApply = GetAllTypeHierarchyMembers(context.Configuration, type); foreach (var existingMemberConfig in membersToApply) { IEngineConfigurationTypeMember currentMemberConfig = type.GetRegisteredMember(existingMemberConfig.Member); if (currentMemberConfig == null) { type.RegisterMember(existingMemberConfig.Member); currentMemberConfig = type.GetRegisteredMember(existingMemberConfig.Member); currentMemberConfig.SetDatasources(existingMemberConfig.GetDatasources()); } } }