If true will successfully store an unparseable resource name into the UnparsedResource
property; otherwise will throw an ArgumentException if an unparseable resource name is
specified.
If true will successfully store an unparseable resource name into the UnparsedResource
property; otherwise will throw an ArgumentException if an unparseable resource name is
specified.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-07 UTC."],[[["\u003cp\u003eThis document provides reference documentation for the \u003ccode\u003eProductName\u003c/code\u003e class within the Google Cloud Vision v1 API, used to represent a resource name for a product.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eProductName\u003c/code\u003e class is a sealed class that implements \u003ccode\u003eIResourceName\u003c/code\u003e and \u003ccode\u003eIEquatable<ProductName>\u003c/code\u003e, indicating it is a specific type of resource name and supports value-based equality.\u003c/p\u003e\n"],["\u003cp\u003eThe latest version of the API documented is 3.7.0, but other versions such as 3.6.0, 3.5.0, 3.4.0, 3.3.0, 3.2.0, 3.1.0, 3.0.0, 2.5.0, 2.4.0, and 2.3.0 are available and listed in the document.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eProductName\u003c/code\u003e class allows construction, formatting, parsing, and validation of product resource names using the pattern \u003ccode\u003eprojects/{project}/locations/{location}/products/{product}\u003c/code\u003e, which requires a project ID, location ID, and product ID.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eProductName\u003c/code\u003e class contains properties to determine the \u003ccode\u003eProjectId\u003c/code\u003e, \u003ccode\u003eLocationId\u003c/code\u003e, and \u003ccode\u003eProductId\u003c/code\u003e as well as whether the instance is a known pattern, the type of the resource name, and if it's an unparsed resource.\u003c/p\u003e\n"]]],[],null,["# Google Cloud Vision v1 API - Class ProductName (3.7.0)\n\nVersion latestkeyboard_arrow_down\n\n- [3.7.0 (latest)](/dotnet/docs/reference/Google.Cloud.Vision.V1/latest/Google.Cloud.Vision.V1.ProductName)\n- [3.6.0](/dotnet/docs/reference/Google.Cloud.Vision.V1/3.6.0/Google.Cloud.Vision.V1.ProductName)\n- [3.5.0](/dotnet/docs/reference/Google.Cloud.Vision.V1/3.5.0/Google.Cloud.Vision.V1.ProductName)\n- [3.4.0](/dotnet/docs/reference/Google.Cloud.Vision.V1/3.4.0/Google.Cloud.Vision.V1.ProductName)\n- [3.3.0](/dotnet/docs/reference/Google.Cloud.Vision.V1/3.3.0/Google.Cloud.Vision.V1.ProductName)\n- [3.2.0](/dotnet/docs/reference/Google.Cloud.Vision.V1/3.2.0/Google.Cloud.Vision.V1.ProductName)\n- [3.1.0](/dotnet/docs/reference/Google.Cloud.Vision.V1/3.1.0/Google.Cloud.Vision.V1.ProductName)\n- [3.0.0](/dotnet/docs/reference/Google.Cloud.Vision.V1/3.0.0/Google.Cloud.Vision.V1.ProductName)\n- [2.5.0](/dotnet/docs/reference/Google.Cloud.Vision.V1/2.5.0/Google.Cloud.Vision.V1.ProductName)\n- [2.4.0](/dotnet/docs/reference/Google.Cloud.Vision.V1/2.4.0/Google.Cloud.Vision.V1.ProductName)\n- [2.3.0](/dotnet/docs/reference/Google.Cloud.Vision.V1/2.3.0/Google.Cloud.Vision.V1.ProductName) \n\n public sealed class ProductName : IResourceName, IEquatable\u003cProductName\u003e\n\nReference documentation and code samples for the Google Cloud Vision v1 API class ProductName.\n\nResource name for the `Product` resource. \n\nInheritance\n-----------\n\n[object](https://learn.microsoft.com/dotnet/api/system.object) \\\u003e ProductName \n\nImplements\n----------\n\n[IResourceName](https://github.com/googleapis/gax-dotnet/blob/83f42b5edc4529818dbdb34d9ea9ecc3c04f7b6e/Google.Api.Gax/IResourceName.cs), [IEquatable](https://learn.microsoft.com/dotnet/api/system.iequatable-1)[ProductName](/dotnet/docs/reference/Google.Cloud.Vision.V1/latest/Google.Cloud.Vision.V1.ProductName) \n\nInherited Members\n-----------------\n\n[object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype)\n\nNamespace\n---------\n\n[Google.Cloud.Vision.V1](/dotnet/docs/reference/Google.Cloud.Vision.V1/latest/Google.Cloud.Vision.V1)\n\nAssembly\n--------\n\nGoogle.Cloud.Vision.V1.dll\n\nConstructors\n------------\n\n### ProductName(string, string, string)\n\n public ProductName(string projectId, string locationId, string productId)\n\nConstructs a new instance of a [ProductName](/dotnet/docs/reference/Google.Cloud.Vision.V1/latest/Google.Cloud.Vision.V1.ProductName) class from the component parts of pattern\n`projects/{project}/locations/{location}/products/{product}`\n\nProperties\n----------\n\n### IsKnownPattern\n\n public bool IsKnownPattern { get; }\n\nWhether this instance contains a resource name with a known pattern.\n\n### LocationId\n\n public string LocationId { get; }\n\nThe `Location` ID. Will not be `null`, unless this instance contains an unparsed resource name.\n\n### ProductId\n\n public string ProductId { get; }\n\nThe `Product` ID. Will not be `null`, unless this instance contains an unparsed resource name.\n\n### ProjectId\n\n public string ProjectId { get; }\n\nThe `Project` ID. Will not be `null`, unless this instance contains an unparsed resource name.\n\n### Type\n\n public ProductName.ResourceNameType Type { get; }\n\nThe [ProductName.ResourceNameType](/dotnet/docs/reference/Google.Cloud.Vision.V1/latest/Google.Cloud.Vision.V1.ProductName.ResourceNameType) of the contained resource name.\n\n### UnparsedResource\n\n public UnparsedResourceName UnparsedResource { get; }\n\nThe contained [UnparsedResourceName](https://github.com/googleapis/gax-dotnet/blob/83f42b5edc4529818dbdb34d9ea9ecc3c04f7b6e/Google.Api.Gax/UnparsedResourceName.cs). Only non-`null` if this instance contains an\nunparsed resource name.\n\nMethods\n-------\n\n### Format(string, string, string)\n\n public static string Format(string projectId, string locationId, string productId)\n\nFormats the IDs into the string representation of this [ProductName](/dotnet/docs/reference/Google.Cloud.Vision.V1/latest/Google.Cloud.Vision.V1.ProductName) with pattern\n`projects/{project}/locations/{location}/products/{product}`.\n\n### FormatProjectLocationProduct(string, string, string)\n\n public static string FormatProjectLocationProduct(string projectId, string locationId, string productId)\n\nFormats the IDs into the string representation of this [ProductName](/dotnet/docs/reference/Google.Cloud.Vision.V1/latest/Google.Cloud.Vision.V1.ProductName) with pattern\n`projects/{project}/locations/{location}/products/{product}`.\n\n### FromProjectLocationProduct(string, string, string)\n\n public static ProductName FromProjectLocationProduct(string projectId, string locationId, string productId)\n\nCreates a [ProductName](/dotnet/docs/reference/Google.Cloud.Vision.V1/latest/Google.Cloud.Vision.V1.ProductName) with the pattern\n`projects/{project}/locations/{location}/products/{product}`.\n\n### FromUnparsed(UnparsedResourceName)\n\n public static ProductName FromUnparsed(UnparsedResourceName unparsedResourceName)\n\nCreates a [ProductName](/dotnet/docs/reference/Google.Cloud.Vision.V1/latest/Google.Cloud.Vision.V1.ProductName) containing an unparsed resource name.\n\n### GetHashCode()\n\n public override int GetHashCode()\n\nReturns a hash code for this resource name.\n\n**Overrides** \n[object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode)\n\n### Parse(string)\n\n public static ProductName Parse(string productName)\n\nParses the given resource name string into a new [ProductName](/dotnet/docs/reference/Google.Cloud.Vision.V1/latest/Google.Cloud.Vision.V1.ProductName) instance.\n\n**Remarks** \nTo parse successfully, the resource name must be formatted as one of the following:\n\n- `projects/{project}/locations/{location}/products/{product}`\n\n\u003cbr /\u003e\n\n### Parse(string, bool)\n\n public static ProductName Parse(string productName, bool allowUnparsed)\n\nParses the given resource name string into a new [ProductName](/dotnet/docs/reference/Google.Cloud.Vision.V1/latest/Google.Cloud.Vision.V1.ProductName) instance; optionally allowing an\nunparseable resource name.\n\n**Remarks** \nTo parse successfully, the resource name must be formatted as one of the following:\n\n- `projects/{project}/locations/{location}/products/{product}`\n\nOr may be in any format if `allowUnparsed` is `true`.\n\n\u003cbr /\u003e\n\n### ToString()\n\n public override string ToString()\n\nThe string representation of the resource name.\n\n**Overrides** \n[object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)\n\n### TryParse(string, out ProductName)\n\n public static bool TryParse(string productName, out ProductName result)\n\nTries to parse the given resource name string into a new [ProductName](/dotnet/docs/reference/Google.Cloud.Vision.V1/latest/Google.Cloud.Vision.V1.ProductName) instance.\n\n**Remarks** \nTo parse successfully, the resource name must be formatted as one of the following:\n\n- `projects/{project}/locations/{location}/products/{product}`\n\n\u003cbr /\u003e\n\n### TryParse(string, bool, out ProductName)\n\n public static bool TryParse(string productName, bool allowUnparsed, out ProductName result)\n\nTries to parse the given resource name string into a new [ProductName](/dotnet/docs/reference/Google.Cloud.Vision.V1/latest/Google.Cloud.Vision.V1.ProductName) instance; optionally\nallowing an unparseable resource name.\n\n**Remarks** \nTo parse successfully, the resource name must be formatted as one of the following:\n\n- `projects/{project}/locations/{location}/products/{product}`\n\nOr may be in any format if `allowUnparsed` is `true`.\n\n\u003cbr /\u003e\n\nOperators\n---------\n\n### operator ==(ProductName, ProductName)\n\n public static bool operator ==(ProductName a, ProductName b)\n\nDetermines whether two specified resource names have the same value.\n\n### operator !=(ProductName, ProductName)\n\n public static bool operator !=(ProductName a, ProductName b)\n\nDetermines whether two specified resource names have different values."]]