If ExcludeMatchOnTypeOnly is true then we don't match on type only which means
that we return null if we can't match on anything in the request. This is useful
for generating 406 (Not Acceptable) status codes.
Determine how well each formatter matches by associating a MediaTypeFormatterMatchRanking
value with the formatter. Then associate the quality of the match based on q-factors and other parameters.
The result of this method is a collection of the matches found categorized and assigned a quality value.
Performs content negotiating by selecting the most appropriate System.Net.Http.Formatting.MediaTypeFormatter out of the
passed in formatters for the given request that can serialize an
object of the given type.
Determine the best character encoding for writing the response. First we look
for accept-charset headers and if not found then we try to match
any charset encoding in the request (in case of PUT, POST, etc.)
If no encoding is found then we use the default for the formatter.
Determine whether to match on type or not. This is used to determine whether to
generate a 406 response or use the default media type formatter in case there
is no match against anything in the request. If ExcludeMatchOnTypeOnly is true
then we don't match on type unless there are no accept headers.