/// <summary>
        /// Create a <see cref="FieldAccessor.FieldSetter"/> to <c>set</c> the value of the mapped Property
        /// through a <c>Field</c>.
        /// </summary>
        /// <param name="type">The <see cref="System.Type"/> to find the mapped Property in.</param>
        /// <param name="propertyName">The name of the mapped Property to set.</param>
        /// <returns>
        /// The <see cref="FieldAccessor.FieldSetter"/> to use to set the value of the Property on an
        /// instance of the <see cref="System.Type"/>.
        /// </returns>
        /// <exception cref="PropertyNotFoundException" >
        /// Thrown when a Field for the Property specified by the <c>propertyName</c> using the
        /// <see cref="IFieldNamingStrategy"/> could not be found in the <see cref="System.Type"/>.
        /// </exception>
        public ISetter GetSetter(System.Type type, string propertyName)
        {
            string fieldName = namingStrategy.GetFieldName(propertyName);

            return(new FieldAccessor.FieldSetter(FieldAccessor.GetField(type, fieldName), type, fieldName));
        }