# GetFieldsWithAttribute

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

## Definition

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

## GetFieldsWithAttribute\<T>()

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

```csharp
public static TypeCache.FieldInfoCollection GetFieldsWithAttribute<T>() where T : Attribute
```

### Returns

| Type                                                                                                | Description                                                                                                                                                      |
| --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [FieldInfoCollection](/engine/6000.0/script-reference/unityeditor/typecache/fieldinfocollection.md) | Returns an unordered FieldInfo collection of fields marked with the **T** attribute. If assemblyName is specified, returns only fields defined in this assembly. |

### Remarks

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

```csharp
using UnityEditor;
using System;
using System.Collections.Generic;

public class Example
{
    class MyAttribute : Attribute {}

    [MyAttribute]
    static int s_MyField;

    static void ScanStaticFieldsMarkedWithMyAttribute()
    {
        var extractedFields = TypeCache.GetFieldsWithAttribute<MyAttribute>();
        foreach (var fi in extractedFields)
        {
            if (!fi.IsStatic)
                continue;
            //...
        }
    }
}
```

**Note:** The returned [TypeCache.FieldInfoCollection](/engine/6000.0/script-reference/unityeditor/typecache/fieldinfocollection.md) is read-only and thread-safe. The order of FieldInfo in the collection is undefined.

## GetFieldsWithAttribute(Type)

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

```csharp
public static TypeCache.FieldInfoCollection GetFieldsWithAttribute(Type attrType)
```

### Parameters

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

### Returns

| Type                                                                                                | Description                                                                                                                                                      |
| --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [FieldInfoCollection](/engine/6000.0/script-reference/unityeditor/typecache/fieldinfocollection.md) | Returns an unordered FieldInfo collection of fields marked with the **T** attribute. If assemblyName is specified, returns only fields defined in this assembly. |

### Remarks

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

```csharp
using UnityEditor;
using System;
using System.Collections.Generic;

public class Example
{
    class MyAttribute : Attribute {}

    [MyAttribute]
    static int s_MyField;

    static void ScanStaticFieldsMarkedWithMyAttribute()
    {
        var extractedFields = TypeCache.GetFieldsWithAttribute<MyAttribute>();
        foreach (var fi in extractedFields)
        {
            if (!fi.IsStatic)
                continue;
            //...
        }
    }
}
```

**Note:** The returned [TypeCache.FieldInfoCollection](/engine/6000.0/script-reference/unityeditor/typecache/fieldinfocollection.md) is read-only and thread-safe. The order of FieldInfo in the collection is undefined.

## GetFieldsWithAttribute\<T>(string)

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

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

### Parameters

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

### Returns

| Type                                                                                                | Description                                                                                                                                                      |
| --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [FieldInfoCollection](/engine/6000.0/script-reference/unityeditor/typecache/fieldinfocollection.md) | Returns an unordered FieldInfo collection of fields marked with the **T** attribute. If assemblyName is specified, returns only fields defined in this assembly. |

### Remarks

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

```csharp
using UnityEditor;
using System;
using System.Collections.Generic;

public class Example
{
    class MyAttribute : Attribute {}

    [MyAttribute]
    static int s_MyField;

    static void ScanStaticFieldsMarkedWithMyAttribute()
    {
        var extractedFields = TypeCache.GetFieldsWithAttribute<MyAttribute>();
        foreach (var fi in extractedFields)
        {
            if (!fi.IsStatic)
                continue;
            //...
        }
    }
}
```

**Note:** The returned [TypeCache.FieldInfoCollection](/engine/6000.0/script-reference/unityeditor/typecache/fieldinfocollection.md) is read-only and thread-safe. The order of FieldInfo in the collection is undefined.

## GetFieldsWithAttribute(Type, string)

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

```csharp
public static TypeCache.FieldInfoCollection GetFieldsWithAttribute(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                                                                                                                                                      |
| --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [FieldInfoCollection](/engine/6000.0/script-reference/unityeditor/typecache/fieldinfocollection.md) | Returns an unordered FieldInfo collection of fields marked with the **T** attribute. If assemblyName is specified, returns only fields defined in this assembly. |

### Remarks

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

```csharp
using UnityEditor;
using System;
using System.Collections.Generic;

public class Example
{
    class MyAttribute : Attribute {}

    [MyAttribute]
    static int s_MyField;

    static void ScanStaticFieldsMarkedWithMyAttribute()
    {
        var extractedFields = TypeCache.GetFieldsWithAttribute<MyAttribute>();
        foreach (var fi in extractedFields)
        {
            if (!fi.IsStatic)
                continue;
            //...
        }
    }
}
```

**Note:** The returned [TypeCache.FieldInfoCollection](/engine/6000.0/script-reference/unityeditor/typecache/fieldinfocollection.md) is read-only and thread-safe. The order of FieldInfo in the collection is undefined.
