Ejemplo n.º 1
0
        /// <summary>
        /// Create a default <see cref="MessageDescription"/> with all the properties added by their hashcode
        /// </summary>
        /// <returns>A new instance of <see cref="MessageDescription"/> representing the type</returns>
        public static MessageDescription DefaultFor <T>()
        {
            IMessageDescriptionBuilderFor <T> builder = new MessageDescriptionBuilderFor <T>(typeof(T).Name);

            builder = builder.WithAllProperties();
            return(builder.Build());
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Start building a description for
        /// </summary>
        /// <returns>A new instance of <see cref="MessageDescription"/> representing the type</returns>
        public static MessageDescription For <T>(Func <IMessageDescriptionBuilderFor <T>, IMessageDescriptionBuilderFor <T> > builderCallback)
        {
            IMessageDescriptionBuilderFor <T> builder = new MessageDescriptionBuilderFor <T>(typeof(T).Name);

            builder = builderCallback(builder);
            return(builder.Build());
        }
        /// <inheritdoc/>
        public IMessageDescriptionBuilderFor <T> WithAllProperties()
        {
            var properties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
            var propertyDescriptionBuilders = properties.Select(_ => new PropertyDescriptionBuilder(_, _.Name, null, 0)).ToArray();
            var messageDescriptionBuilder   = new MessageDescriptionBuilderFor <T>(_name, propertyDescriptionBuilders);

            return(messageDescriptionBuilder);
        }
        /// <inheritdoc/>
        public IMessageDescriptionBuilderFor <T> Property <TProp>(Expression <Func <TProp> > property, Func <IPropertyDescriptionBuilder, IPropertyDescriptionBuilder> propertyDescriptionBuilderCallback)
        {
            var propertyInfo = property.GetPropertyInfo();
            IPropertyDescriptionBuilder propertyDescriptionBuilder = new PropertyDescriptionBuilder(propertyInfo, propertyInfo.Name, null, 0);

            propertyDescriptionBuilder = propertyDescriptionBuilderCallback(propertyDescriptionBuilder);
            var propertyDescriptionBuilders = new List <IPropertyDescriptionBuilder>(_propertyDescriptionBuilders);

            propertyDescriptionBuilders.Add(propertyDescriptionBuilder);
            var messageDescriptionBuilder = new MessageDescriptionBuilderFor <T>(_name, propertyDescriptionBuilders);

            return(messageDescriptionBuilder);
        }