The specified message descriptors are only used to identify their file descriptors; the returned registry
contains all the types within the file descriptors which contain the specified message descriptors (and
the dependencies of those files), not just the specified messages.
[[["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-07 UTC."],[[["\u003cp\u003e\u003ccode\u003eTypeRegistry\u003c/code\u003e is an immutable registry that stores and allows lookup of types by their full name.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eEmpty\u003c/code\u003e property provides an empty type registry that contains no types within it.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eFind(string)\u003c/code\u003e allows users to search for a message descriptor by its full name, returning the descriptor or null if it's not found.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eFromFiles\u003c/code\u003e and \u003ccode\u003eFromMessages\u003c/code\u003e methods enable the creation of a type registry from either file descriptors or message descriptors, respectively, including dependencies.\u003c/p\u003e\n"],["\u003cp\u003eInherited members include standard methods from the \u003ccode\u003eobject\u003c/code\u003e class, such as \u003ccode\u003eEquals\u003c/code\u003e, \u003ccode\u003eGetHashCode\u003c/code\u003e, and \u003ccode\u003eToString\u003c/code\u003e.\u003c/p\u003e\n"]]],[],null,["# Class TypeRegistry (3.27.1)\n\nVersion latestkeyboard_arrow_down\n\n- [3.27.1 (latest)](/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.Reflection.TypeRegistry)\n- [3.23.0](/dotnet/docs/reference/Google.Protobuf/3.23.0/Google.Protobuf.Reflection.TypeRegistry)\n- [3.15.8](/dotnet/docs/reference/Google.Protobuf/3.15.8/Google.Protobuf.Reflection.TypeRegistry) \n\n public sealed class TypeRegistry\n\nAn immutable registry of types which can be looked up by their full name. \n\nInheritance\n-----------\n\n[object](https://learn.microsoft.com/dotnet/api/system.object) \\\u003e TypeRegistry \n\nInherited Members\n-----------------\n\n[object.Equals(object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)) \n[object.Equals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)) \n[object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode) \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[object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)\n\nNamespace\n---------\n\n[Google.Protobuf.Reflection](/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.Reflection)\n\nAssembly\n--------\n\nGoogle.Protobuf.dll\n\nProperties\n----------\n\n### Empty\n\n public static TypeRegistry Empty { get; }\n\nAn empty type registry, containing no types.\n\nMethods\n-------\n\n### Find(string)\n\n public MessageDescriptor Find(string fullName)\n\nAttempts to find a message descriptor by its full name.\n\n### FromFiles(params FileDescriptor\\[\\])\n\n public static TypeRegistry FromFiles(params FileDescriptor[] fileDescriptors)\n\nCreates a type registry from the specified set of file descriptors.\n\n**Remarks** \nThis is a convenience overload for [FromFiles(IEnumerable\\\u003cFileDescriptor\\\u003e)](/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.Reflection.TypeRegistry#Google_Protobuf_Reflection_TypeRegistry_FromFiles_System_Collections_Generic_IEnumerable_Google_Protobuf_Reflection_FileDescriptor__)\nto allow calls such as `TypeRegistry.FromFiles(descriptor1, descriptor2)`.\n\n### FromFiles(IEnumerable\\\u003cFileDescriptor\\\u003e)\n\n public static TypeRegistry FromFiles(IEnumerable\u003cFileDescriptor\u003e fileDescriptors)\n\nCreates a type registry from the specified set of file descriptors.\n\n**Remarks** \nAll message types within all the specified files are added to the registry, and\nthe dependencies of the specified files are also added, recursively.\n\n### FromMessages(params MessageDescriptor\\[\\])\n\n public static TypeRegistry FromMessages(params MessageDescriptor[] messageDescriptors)\n\nCreates a type registry from the file descriptor parents of the specified set of message descriptors.\n\n**Remarks** \nThis is a convenience overload for [FromMessages(IEnumerable\\\u003cMessageDescriptor\\\u003e)](/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.Reflection.TypeRegistry#Google_Protobuf_Reflection_TypeRegistry_FromMessages_System_Collections_Generic_IEnumerable_Google_Protobuf_Reflection_MessageDescriptor__)\nto allow calls such as `TypeRegistry.FromFiles(descriptor1, descriptor2)`.\n\n### FromMessages(IEnumerable\\\u003cMessageDescriptor\\\u003e)\n\n public static TypeRegistry FromMessages(IEnumerable\u003cMessageDescriptor\u003e messageDescriptors)\n\nCreates a type registry from the file descriptor parents of the specified set of message descriptors.\n\n**Remarks** \nThe specified message descriptors are only used to identify their file descriptors; the returned registry\ncontains all the types within the file descriptors which contain the specified message descriptors (and\nthe dependencies of those files), not just the specified messages."]]