Beispiel #1
0
        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);
        }
Beispiel #2
0
        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");
        }
Beispiel #3
0
        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");
        }