internal static bool TryParse <T> (string input, out T parsedValue, Func <T> factory) where T : MediaTypeHeaderValue { parsedValue = null; var lexer = new Lexer(input); string media; List <NameValueHeaderValue> parameters = null; var token = TryParseMediaType(lexer, out media); if (token == null) { return(false); } switch (token.Value.Kind) { case Token.Type.SeparatorSemicolon: if (!NameValueHeaderValue.ParseParameters(lexer, out parameters)) { return(false); } break; case Token.Type.End: break; default: return(false); } parsedValue = factory(); parsedValue.media_type = media; parsedValue.parameters = parameters; return(true); }