Exemple #1
0
        private IEnumerable <IMemberAccessor> GetProperties(BindingFlags bindings)
        {
            var properties = Type.GetProperties(bindings);

            foreach (var propertyInfo in properties)
            {
                yield return(_propertyCache.Value.GetOrAdd(
                                 propertyInfo.Name,
                                 () => PropertyAccessor.Create(propertyInfo)));
            }
        }
Exemple #2
0
        public IMemberAccessor GetProperty(string name)
        {
            name.ThrowIfNullOrEmpty();

            IMemberAccessor accessor;

            if (_propertyCache.Value.TryGetValue(name, out accessor))
            {
                return(accessor);
            }

            var propertyInfo = Type.GetProperty(name);
            var value        = PropertyAccessor.Create(propertyInfo);

            _propertyCache.Value.Add(name, value);

            return(value);
        }
Exemple #3
0
        public IMemberAccessor GetProperty <T>(Expression <Func <T, object> > expression)
        {
            expression.ThrowIfNull();

            var propertyInfo = expression.GetPropertyAccess();

            IMemberAccessor accessor;

            if (_propertyCache.Value.TryGetValue(propertyInfo.Name, out accessor))
            {
                return(accessor);
            }

            var value = PropertyAccessor.Create(propertyInfo);

            _propertyCache.Value.Add(propertyInfo.Name, value);

            return(value);
        }