public void EmitFieldGetterSetterEmits() { var getter1 = ReflectionUtilities.EmitFieldGetter <Class1, int>("Field1"); var getter2 = ReflectionUtilities.EmitFieldGetter <Class1, int>("Field2"); var c = new Class1(); Assert.AreEqual(33, getter1(c)); Assert.AreEqual(66, getter2(c)); var setter2 = ReflectionUtilities.EmitFieldSetter <Class1, int>("Field2"); setter2(c, 99); Assert.AreEqual(99, getter2(c)); // works on readonly fields! var(getter3, setter3) = ReflectionUtilities.EmitFieldGetterAndSetter <Class1, int>("Field3"); Assert.AreEqual(22, getter3(c)); setter3(c, 44); Assert.AreEqual(44, getter3(c)); }
public SqlInspectionUtilities() { (_getSqlText, _setSqlText) = ReflectionUtilities.EmitFieldGetterAndSetter <Sql, string>("_sql"); _getSqlRhs = ReflectionUtilities.EmitFieldGetter <Sql, Sql>("_rhs"); _setSqlFinal = ReflectionUtilities.EmitFieldSetter <Sql, string>("_sqlFinal"); }