Class
ReflectionService
NotCreatableServiceNotReplicated
A service that allows scripts to query the engine's API at runtime for information about classes, properties, methods, and events.
ReflectionService allows scripts to query the engine for details about its
API, including required security permissions, functionality, and inheritance
structure. You can use this service to dynamically inspect classes and their
properties, methods, and events, which can be useful for debugging, tooling,
or creating dynamic behaviors based on the engine's capabilities.
The following is an example script that inspects classes and their properties:
Methods 5#
| GetClass | Returns information about a class when given its name, assuming that class is accessible.CustomLuaState |
| GetClasses | Returns a list of all classes accessible with filters applied.CustomLuaState |
| GetEventsOfClass | Returns a list of events for a given class with filters applied.CustomLuaState |
| GetMethodsOfClass | Returns a list of methods for a given class with filters applied.CustomLuaState |
| GetPropertiesOfClass | Returns a list of properties for a given class with filters applied.CustomLuaState |
GetClass(className: string, filter: Dictionary = nil): ReflectedClass?#
CustomLuaState
Given a class name in the Roblox API, returns a ReflectedClass
dictionary with information about the associated class's reflection state.
If no such class name exists, returns nil.
If you pass in a ReflectionClassFilter dictionary, you can adjust the
set of eligible classes and adjust the output behavior:
{
-- The security context to use; can be more expansive than the current script's security
Security: SecurityCapabilities?, -- default: SecurityCapabilities.fromCurrent()
-- Require classes to derive from the passed-in class name
IsA: string?, -- default: nil
-- Whether to exclude Studio display information about the class
ExcludeDisplay: boolean?, -- default: false
}If the class name is valid, you'll get the following ReflectedClass
dictionary as output:
{
-- The name of the class
Name: string,
-- Whether the class is serialized (able to be saved to disk)
Serialized: boolean,
-- The class's parent in the instance hierarchy (unless it's the root)
Superclass: string?,
-- The names of the class's direct children in the instance hierarchy
Subclasses: {string},
-- Studio display information
Display: {
-- Always "General" for classes
Category: string,
-- A message indicating that the class is deprecated, if applicable
DeprecationMessage: string?,
}?,
-- The security permissions required to access this class
Permits: {
-- If the class is a Service, the security capabilities required to obtain access. If not applicable, this field isn't present
GetService: SecurityCapabilities?,
-- The security capabilities required to create an instance of this class. If not possible, this field isn't present
New: SecurityCapabilities?,
}
}| Name | Type | Default | Description |
|---|---|---|---|
className | string | The name of the class for which you wish to retrieve information. | |
filter | Dictionary | nil | An optional filter to restrict or expand the set of classes that this method can return and change the method's behavior. |
Returns
ReflectedClass?— AReflectedClassdictionary with reflection information if the class exists; otherwise,nil.
GetClasses(filter: Dictionary = nil): List<ReflectedClass>#
CustomLuaState
Returns a list of ReflectedClass dictionaries for all classes in the
Roblox API that match the provided filter criteria.
If you pass in a ReflectionClassFilter dictionary, you can adjust the
set of eligible classes and adjust the output behavior:
{
-- The security context to use; can be more expansive than the current script's security
Security: SecurityCapabilities?, -- default: SecurityCapabilities.fromCurrent()
-- Require classes to derive from the passed-in class name
IsA: string?, -- default: nil
-- Whether to exclude Studio display information about the classes
ExcludeDisplay: boolean?, -- default: false
}You'll get a list of ReflectedClass dictionaries as output, each with
the same structure as described in the GetClass method. If there are no
classes that match the filter criteria, you'll receive an empty list.
| Name | Type | Default | Description |
|---|---|---|---|
filter | Dictionary | nil | An optional filter to restrict or expand the set of classes that this method can return and change the method's behavior. |
Returns
List<ReflectedClass>— A list ofReflectedClassdictionaries with reflection information for each class that matches the filter criteria.
GetEventsOfClass(className: string, filter: Dictionary = nil): List<ReflectedEvent>#
CustomLuaState
Given a class name in the Roblox API, returns a list of ReflectedEvent
dictionaries for all events of that class that match the provided filter
criteria. If no such class name exists, returns nil.
If you pass in a ReflectionMemberFilter dictionary, you can adjust the
set of eligible events and adjust the output behavior:
{
-- The security context to use; can be more expansive than the current script's security
Security: SecurityCapabilities?, -- default: SecurityCapabilities.fromCurrent()
-- Whether to exclude inherited events from superclasses
ExcludeInherited: boolean?, -- default: false
-- Whether to exclude Studio display information about the events
ExcludeDisplay: boolean?, -- default: false
}If the class name is valid and that class has events, you'll get a list of
ReflectedEvent dictionaries as output, each with the following
structure:
{
-- The name of the event
Name: string,
-- The superclass from which the property is inherited, or the class name if not inherited
Owner: string,
-- A list of all parameters the event passes to connected functions
Parameters: {
{
-- The name of the parameter
Name: string,
-- The type of the parameter
Type: ReflectionType,
}
},
-- Studio display information
Display: {
-- A message indicating that the event is deprecated, if applicable
DeprecationMessage: string?,
}?,
-- The security permissions required to access this event
Permits: {
-- The security permissions required to listen for the event in any context
Listen: SecurityCapabilities?,
},
}| Name | Type | Default | Description |
|---|---|---|---|
className | string | The name of the class for which you wish to retrieve events. | |
filter | Dictionary | nil | An optional filter to restrict or expand the set of events that this method can return and change the method's behavior. |
Returns
List<ReflectedEvent>— A list ofReflectedEventdictionaries with reflection information for each event of the class that matches the filter criteria.
GetMethodsOfClass(className: string, filter: Dictionary = nil): List<ReflectedMethod>#
CustomLuaState
Given a class name in the Roblox API, returns a list of ReflectedMethod
dictionaries for all methods of that class that match the provided filter
criteria. If no such class name exists, returns nil.
If you pass in a ReflectionMemberFilter dictionary, you can adjust the
set of eligible methods and adjust the output behavior:
{
-- The security context to use; can be more expansive than the current script's security
Security: SecurityCapabilities?, -- default: SecurityCapabilities.fromCurrent()
-- Whether to exclude inherited methods from superclasses
ExcludeInherited: boolean?, -- default: false
-- Whether to exclude Studio display information about the methods
ExcludeDisplay: boolean?, -- default: false
}If the class name is valid and that class has methods, you'll get a list
of ReflectedMethod dictionaries as output, each with the following
structure:
{
-- The name of the method
Name: string,
-- The superclass from which the property is inherited, or the class name if not inherited
Owner: string,
-- A list of all parameters the method takes
Parameters: {
{
-- The name of the parameter
Name: string,
-- The type of the parameter
Type: ReflectionType,
-- The default value of the parameter, if it has one
DefaultValue: any?,
}
},
-- The return type of the method; "void" if none
ReturnType: ReflectionType,
-- Whether the method is yielding
CanYield: boolean,
-- Studio display information
Display: {
-- A message indicating that the method is deprecated, if applicable
DeprecationMessage: string?,
}?,
-- The security permissions required to access this method
Permits: {
-- The security permissions required to call the method in a single-threaded context
Call: SecurityCapabilities?,
-- The security permissions required to call the method in a parallel context
CallParallel: SecurityCapabilities?,
},
}| Name | Type | Default | Description |
|---|---|---|---|
className | string | The name of the class for which you wish to retrieve methods. | |
filter | Dictionary | nil | An optional filter to restrict or expand the set of methods that this method can return and change the method's behavior. |
Returns
List<ReflectedMethod>— A list ofReflectedMethoddictionaries with reflection information for each method of the class that matches the filter criteria.
GetPropertiesOfClass(className: string, filter: Dictionary = nil): List<ReflectedProperty>#
CustomLuaState
Given a class name in the Roblox API, returns a list of
ReflectedProperty dictionaries for all properties of that class that
match the provided filter criteria. If no such class name exists, returns
nil.
If you pass in a ReflectionMemberFilter dictionary, you can adjust the
set of eligible properties and adjust the output behavior:
{
-- The security context to use; can be more expansive than the current script's security
Security: SecurityCapabilities?, -- default: SecurityCapabilities.fromCurrent()
-- Whether to exclude inherited properties from superclasses
ExcludeInherited: boolean?, -- default: false
-- Whether to exclude Studio display information about the properties
ExcludeDisplay: boolean?, -- default: false
}If the class name is valid and that class has properties, you'll get a
list of ReflectedProperty dictionaries as output, each with the
following structure:
{
-- The name of the property
Name: string,
-- The superclass from which the property is inherited, or the class name if not inherited
Owner: string,
-- Whether the property is serialized (able to be saved to disk or sent over the network)
Serialized: boolean,
-- The type of the property
Type: ReflectionType,
-- The content type of the property, if applicable
ContentType: Enum.AssetType?,
-- Studio display information
Display: {
-- The category under which the property is listed in Studio
Category: string,
-- A message indicating that the property is deprecated, if applicable
DeprecationMessage: string?,
}?,
-- The security permissions required to access this property
Permits: {
-- The security context required to read this property
Read: SecurityCapabilities?,
-- The security context required to read this property while thread-safe
ReadParallel: SecurityCapabilities?,
-- The security context required to write to this property
Write: SecurityCapabilities?,
-- The security context required to write to this property while thread-safe
WriteParallel: SecurityCapabilities?,
},
}| Name | Type | Default | Description |
|---|---|---|---|
className | string | The name of the class for which you wish to retrieve properties. | |
filter | Dictionary | nil | An optional filter to restrict or expand the set of properties that this method can return and change the method's behavior. |
Returns
List<ReflectedProperty>— A list ofReflectedPropertydictionaries with reflection information for each property of the class that matches the filter criteria.
Inherited members#
Inherited from Instance 58
Properties (10)
Archivable, archivable, Capabilities, IsInSandbox, Name, Parent, PredictionMode, RobloxLocked, Sandboxed, UniqueId
Methods (39)
AddTag, children, ClearAllChildren, Clone, clone, Destroy, destroy, FindFirstAncestor, FindFirstAncestorOfClass, FindFirstAncestorWhichIsA, FindFirstChild, findFirstChild, FindFirstChildOfClass, FindFirstChildWhichIsA, FindFirstDescendant, GetActor, GetAttribute, GetAttributeChangedSignal, GetAttributes, GetChildren, getChildren, GetDebugId, GetDescendants, GetFullName, GetStyled, GetStyledPropertyChangedSignal, GetTags, HasTag, IsAncestorOf, IsDescendantOf, isDescendantOf, IsPropertyModified, QueryDescendants, Remove, remove, RemoveTag, ResetPropertyToDefault, SetAttribute, WaitForChild