Esempio n. 1
0
        public MemberConfigurationBuilder Member <TMember>(Expression <Func <T, TMember> > member)
        {
            if (member == null)
            {
                throw new ArgumentNullException(nameof(member));
            }

            var expression = member.Body as MemberExpression;

            if (expression == null ||
                !_memberTypeSupportConsultant.IsMemberTypeSupported(expression.Member.MemberType))
            {
                // expression contains access to not [supported] member
                throw new ArgumentException("only supported member returning expressions are allowed to pass in \"Member\" method");
            }

            return(new MemberConfigurationBuilder(_memberConfigurationFactory.CreateMemberConfigurationForType(expression.Member.Name,
                                                                                                               expression.Member.MemberType,
                                                                                                               Configuration)));
        }
        protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
        {
            var property = base.CreateProperty(member, memberSerialization);

            if (!_memberTypeSupportConsultant.IsMemberTypeSupported(member.MemberType))
            {
                // nothing to do here
                return(property);
            }

            var typeResolvingConfiguration = Configuration.TypesResolving.GetConfigurationForEntity(member.DeclaringType);

            if (typeResolvingConfiguration != null)
            {
                _memberTypeConfigurationHandlingRouter
                .GetMemberConfigurationHandlerByMemberType(member.MemberType)
                .HandleMemberConfiguration(member, property, typeResolvingConfiguration);
            }

            return(property);
        }