You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
821 B
27 lines
821 B
using System;
|
|
using System.Reflection;
|
|
|
|
namespace UnityEngine.Rendering.HighDefinition
|
|
{
|
|
internal static class ReflectionUtils
|
|
{
|
|
internal static void ForEachFieldOfType<T>(this object instance, Action<T> callback, BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance)
|
|
{
|
|
if (instance == null)
|
|
throw new ArgumentNullException(nameof(instance));
|
|
|
|
var type = instance.GetType();
|
|
var fields = type.GetFields(flags);
|
|
if (fields.Length == 0)
|
|
return;
|
|
|
|
foreach (var fieldInfo in fields)
|
|
{
|
|
if (fieldInfo.GetValue(instance) is T fieldValue)
|
|
{
|
|
callback(fieldValue);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|