private IFieldAccessor BuildFieldAccessor(object ob, string fieldName) { var klass = ob.GetType(); var accessType = _configurationManager.GetAccessType(); if (_provider.HasAccessType(klass)) { accessType = _provider.GetAccessType(klass); } if (_provider.HasPropertyAccessType(klass, fieldName)) { accessType = _provider.GetPropertyAccessType(klass, fieldName); } var customGetter = _provider.GetPropertyCustomGetterName(klass, fieldName); var fieldAccessor = new FieldAccessor(ob, fieldName, accessType); fieldAccessor.SetCustomGetterName(customGetter); if (_logger != null) { fieldAccessor.SetLogger(_logger); } if (_provider.IsVirtualProperty(klass, fieldName)) { fieldAccessor.SetEnsureFieldExists(false); } return(fieldAccessor); }
test_field_accessor_access_property_with_value_correctly_using_a_custom_getter_as_field_has_no_effect() { var cls = new ClassWithGetters(); var accessor = new FieldAccessor(cls, "barMethod3", FieldAccessType.PROPERTY); accessor.SetCustomGetterName("getBarMethod3Bis"); accessor.Exists().Should().BeTrue(); var obj = accessor.Get <object>(); (obj is String).Should().BeTrue(); ((string)obj).Should().BeEquivalentTo("Foo"); }
public void test_field_accessor_access_property_with_value_correctly_using_a_custom_getter() { var cls = new ClassWithGetters(); var accessor = new FieldAccessor(cls, "barMethod2", FieldAccessType.PUBLIC_METHOD); accessor.SetCustomGetterName("getBarMethodBis"); accessor.Exists().Should().BeTrue(); var obj = accessor.Get <object>(); (obj is String).Should().BeTrue(); ((string)obj).Should().BeEquivalentTo("Foo Bar Foo Bar"); }