# GetTypesWithAttribute

> Retrieves an unordered collection of types marked with the T attribute.

## Definition

* **Type:** Method
* **Namespace:** [UnityEditor](/engine/6000.5/script-reference/unityeditor.md)
* **Assembly:** UnityEditor.CoreModule

## GetTypesWithAttribute\<T>()

Retrieves an unordered collection of types marked with the **T** attribute.

```csharp
public static TypeCache.TypeCollection GetTypesWithAttribute<T>() where T : Attribute
```

### Returns

| Type                                                                                      | Description                                                                                                          |
| ----------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| [TypeCollection](/engine/6000.5/script-reference/unityeditor/typecache/typecollection.md) | Returns an unordered collection of types. If assemblyName is specified, returns only types defined in this assembly. |

### Remarks

This method provides fast access to all classes loaded from a given assembly or all Unity domain assemblies and marked with a specific attribute. Types marked with ancestors of the specified attribute are also included in the result. The order of results is undefined.

```csharp
using UnityEditor;

public class Example
{
    static void ScanTypesWithAttribute()
    {
        var extractedTypes = TypeCache.GetTypesWithAttribute<CustomEditor>();
        foreach (var m in extractedTypes)
        {
            //...
        }
    }
}
```

**Note:** The returned [TypeCache.TypeCollection](/engine/6000.5/script-reference/unityeditor/typecache/typecollection.md) is read-only and thread-safe. The order of types in the collection is undefined.

## GetTypesWithAttribute(Type)

Retrieves an unordered collection of types marked with the **T** attribute.

```csharp
public static TypeCache.TypeCollection GetTypesWithAttribute(Type attrType)
```

### Parameters

**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): Attribute type.

### Returns

| Type                                                                                      | Description                                                                                                          |
| ----------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| [TypeCollection](/engine/6000.5/script-reference/unityeditor/typecache/typecollection.md) | Returns an unordered collection of types. If assemblyName is specified, returns only types defined in this assembly. |

### Remarks

This method provides fast access to all classes loaded from a given assembly or all Unity domain assemblies and marked with a specific attribute. Types marked with ancestors of the specified attribute are also included in the result. The order of results is undefined.

```csharp
using UnityEditor;

public class Example
{
    static void ScanTypesWithAttribute()
    {
        var extractedTypes = TypeCache.GetTypesWithAttribute<CustomEditor>();
        foreach (var m in extractedTypes)
        {
            //...
        }
    }
}
```

**Note:** The returned [TypeCache.TypeCollection](/engine/6000.5/script-reference/unityeditor/typecache/typecollection.md) is read-only and thread-safe. The order of types in the collection is undefined.

## GetTypesWithAttribute\<T>(string)

Retrieves an unordered collection of types marked with the **T** attribute.

```csharp
public static TypeCache.TypeCollection GetTypesWithAttribute<T>(string assemblyName) where T : Attribute
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): Optional assembly name.

### Returns

| Type                                                                                      | Description                                                                                                          |
| ----------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| [TypeCollection](/engine/6000.5/script-reference/unityeditor/typecache/typecollection.md) | Returns an unordered collection of types. If assemblyName is specified, returns only types defined in this assembly. |

### Remarks

This method provides fast access to all classes loaded from a given assembly or all Unity domain assemblies and marked with a specific attribute. Types marked with ancestors of the specified attribute are also included in the result. The order of results is undefined.

```csharp
using UnityEditor;

public class Example
{
    static void ScanTypesWithAttribute()
    {
        var extractedTypes = TypeCache.GetTypesWithAttribute<CustomEditor>();
        foreach (var m in extractedTypes)
        {
            //...
        }
    }
}
```

**Note:** The returned [TypeCache.TypeCollection](/engine/6000.5/script-reference/unityeditor/typecache/typecollection.md) is read-only and thread-safe. The order of types in the collection is undefined.

## GetTypesWithAttribute(Type, string)

Retrieves an unordered collection of types marked with the **T** attribute.

```csharp
public static TypeCache.TypeCollection GetTypesWithAttribute(Type attrType, string assemblyName)
```

### Parameters

**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): Attribute type.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): Optional assembly name.

### Returns

| Type                                                                                      | Description                                                                                                          |
| ----------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| [TypeCollection](/engine/6000.5/script-reference/unityeditor/typecache/typecollection.md) | Returns an unordered collection of types. If assemblyName is specified, returns only types defined in this assembly. |

### Remarks

This method provides fast access to all classes loaded from a given assembly or all Unity domain assemblies and marked with a specific attribute. Types marked with ancestors of the specified attribute are also included in the result. The order of results is undefined.

```csharp
using UnityEditor;

public class Example
{
    static void ScanTypesWithAttribute()
    {
        var extractedTypes = TypeCache.GetTypesWithAttribute<CustomEditor>();
        foreach (var m in extractedTypes)
        {
            //...
        }
    }
}
```

**Note:** The returned [TypeCache.TypeCollection](/engine/6000.5/script-reference/unityeditor/typecache/typecollection.md) is read-only and thread-safe. The order of types in the collection is undefined.
