The name of the type that the annotated, generic field may represent.
If the type is in the same protobuf package, the value can be the simple
message name e.g., "MyMessage". Otherwise, the value must be the
fully-qualified message name e.g., "google.library.v1.Book".
If the type(s) are unknown to the service (e.g. the field accepts generic
user input), use the wildcard "*" to denote this behavior.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[],[],null,["# Class TypeReference (2.17.0)\n\nVersion latestkeyboard_arrow_down\n\n- [2.17.0 (latest)](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.TypeReference)\n- [2.15.0](/dotnet/docs/reference/Google.Api.CommonProtos/2.15.0/Google.Api.TypeReference)\n- [2.10.0](/dotnet/docs/reference/Google.Api.CommonProtos/2.10.0/Google.Api.TypeReference)\n- [2.2.0](/dotnet/docs/reference/Google.Api.CommonProtos/2.2.0/Google.Api.TypeReference) \n\n public sealed class TypeReference : IMessage\u003cTypeReference\u003e, IEquatable\u003cTypeReference\u003e, IDeepCloneable\u003cTypeReference\u003e, IBufferMessage, IMessage\n\nA reference to a message type, for use in \\[FieldInfo\\]\\[google.api.FieldInfo\\]. \n\nInheritance\n-----------\n\n[object](https://learn.microsoft.com/dotnet/api/system.object) \\\u003e TypeReference \n\nImplements\n----------\n\n[IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage-1.html)[TypeReference](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.TypeReference), [IEquatable](https://learn.microsoft.com/dotnet/api/system.iequatable-1)[TypeReference](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.TypeReference), [IDeepCloneable](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IDeepCloneable-1.html)[TypeReference](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api.TypeReference), [IBufferMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IBufferMessage.html), [IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage.html) \n\nInherited Members\n-----------------\n\n[object.Equals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)) \n[object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype) \n[object.ReferenceEquals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.referenceequals)\n\nNamespace\n---------\n\n[Google.Api](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Api)\n\nAssembly\n--------\n\nGoogle.Api.CommonProtos.dll\n\nConstructors\n------------\n\n### TypeReference()\n\n public TypeReference()\n\n### TypeReference(TypeReference)\n\n public TypeReference(TypeReference other)\n\nFields\n------\n\n### TypeNameFieldNumber\n\n public const int TypeNameFieldNumber = 1\n\nField number for the \"type_name\" field.\n\nProperties\n----------\n\n### Descriptor\n\n public static MessageDescriptor Descriptor { get; }\n\n### Parser\n\n public static MessageParser\u003cTypeReference\u003e Parser { get; }\n\n### TypeName\n\n public string TypeName { get; set; }\n\nThe name of the type that the annotated, generic field may represent.\nIf the type is in the same protobuf package, the value can be the simple\nmessage name e.g., `\"MyMessage\"`. Otherwise, the value must be the\nfully-qualified message name e.g., `\"google.library.v1.Book\"`.\n\nIf the type(s) are unknown to the service (e.g. the field accepts generic\nuser input), use the wildcard `\"*\"` to denote this behavior.\n\nSee [AIP-202](https://google.aip.dev/202#type-references) for more details.\n\nMethods\n-------\n\n### CalculateSize()\n\n public int CalculateSize()\n\n### Clone()\n\n public TypeReference Clone()\n\n### Equals(TypeReference)\n\n public bool Equals(TypeReference other)\n\n### Equals(object)\n\n public override bool Equals(object other)\n\n**Overrides** \n[object.Equals(object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object))\n\n### GetHashCode()\n\n public override int GetHashCode()\n\n**Overrides** \n[object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode)\n\n### MergeFrom(TypeReference)\n\n public void MergeFrom(TypeReference other)\n\n### MergeFrom(CodedInputStream)\n\n public void MergeFrom(CodedInputStream input)\n\n### ToString()\n\n public override string ToString()\n\n**Overrides** \n[object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)\n\n### WriteTo(CodedOutputStream)\n\n public void WriteTo(CodedOutputStream output)"]]