protected IAccessable MapExpressionToProperty<TProperty>( Expression<Func<TSource, TProperty>> source, Expression<Func<TTarget, TProperty>> target ) { Contract.Assert(source != null); var association = new ExpressionToPropertyAssociation<TSource, TTarget, TProperty>(source, target); _associations.Add(association); return association; }
public void TestInverseMappingDoesNothing() { var foo = new Foo { Id = 10 }; Expression <Func <Foo, int> > source = _ => _.Id * _.Id; var sut = new ExpressionToPropertyAssociation <Foo, Bar, int>(source, _ => _.Id); var bar = CreateReader(sut)(foo); bar.Should().NotBeNull(); foo.Id.Should().Be(10); }
public void TestStringMapping() { var foo = new Foo { Name = "123" }; Expression <Func <Foo, int> > source = _ => _.Name.Length; var sut = new ExpressionToPropertyAssociation <Foo, Bar, int>(source, _ => _.Id); var expected = source.Compile()(foo); var bar = CreateReader(sut)(foo); bar.Should().NotBeNull(); bar.Id.Should().Be(expected); }
public void TestInverseMappingAssignsOnWrite() { var foo = new Foo { Component = new Baz() }; var bar = new Bar { Id = 11 }; Expression <Func <Foo, int> > source = _ => _.Component.Id; var sut = new ExpressionToPropertyAssociation <Foo, Bar, int>(source, _ => _.Id); sut.Write(); CreateWriter(sut)(bar, foo); foo.Component.Id.Should().Be(11); }