public void Component(MemberInfo property, Action<IComponentElementMapper> mapping) { System.Type nestedComponentType = property.GetPropertyOrFieldType(); var hbm = new HbmNestedCompositeElement { name = property.Name, @class = nestedComponentType.GetShortClassName(_mapDoc) }; mapping(new ComponentNestedElementMapper(nestedComponentType, _mapDoc, hbm, property)); AddProperty(hbm); }
public ComponentNestedElementMapper(Type componentType, HbmMapping mapDoc, HbmNestedCompositeElement component, MemberInfo declaringComponentMember) { this.componentType = componentType; this.mapDoc = mapDoc; this.component = component; accessorPropertyMapper = new AccessorPropertyMapper(declaringComponentMember.DeclaringType, declaringComponentMember.Name, x => component.access = x); }
public void CanMapParent() { var mapdoc = new HbmMapping(); var component = new HbmNestedCompositeElement(); var mapper = new ComponentNestedElementMapper(typeof(Number), mapdoc, component, ForClass<Address>.Property(a=> a.Number)); mapper.Parent(typeof(Address).GetProperty("Parent")); component.Parent.Should().Not.Be.Null(); component.Parent.name.Should().Be.EqualTo("Parent"); }
public void CallPropertyMapper() { var mapdoc = new HbmMapping(); var component = new HbmNestedCompositeElement(); var mapper = new ComponentNestedElementMapper(typeof(Number), mapdoc, component, ForClass<Address>.Property(a => a.Number)); var called = false; mapper.Property(ForClass<Number>.Property(a => a.Block), x => called = true); called.Should().Be.True(); }
public void CanMapNestedComponent() { var mapdoc = new HbmMapping(); var component = new HbmNestedCompositeElement(); var mapper = new ComponentNestedElementMapper(typeof(Number2), mapdoc, component, ForClass<Number>.Property(a => a.NestNumber)); mapper.Component(ForClass<Number>.Property(a => a.NestNumber), x => { }); component.Properties.Should().Have.Count.EqualTo(1); component.Properties.First().Name.Should().Be.EqualTo("NestNumber"); component.Properties.First().Should().Be.OfType<HbmNestedCompositeElement>(); }
public void CanMapProperty() { var mapdoc = new HbmMapping(); var component = new HbmNestedCompositeElement(); var mapper = new ComponentNestedElementMapper(typeof(Number), mapdoc, component, ForClass<Address>.Property(a => a.Number)); mapper.Property(ForClass<Number>.Property(a => a.Block), x => { }); mapper.Property(ForClass<Number>.Property(a => a.Dir), x => { }); component.Properties.Should().Have.Count.EqualTo(2); component.Properties.Select(cp => cp.Name).Should().Have.SameValuesAs("Block", "Dir"); }
public void CanSetComponentAccessor() { var mapdoc = new HbmMapping(); var component = new HbmNestedCompositeElement(); var mapper = new ComponentNestedElementMapper(typeof(Number), mapdoc, component, ForClass<Address>.Property(a => a.Number)); mapper.Access(Accessor.Field); component.access.Should().Contain("field"); }