public IEnumerable<uint> GetReferencedFormIds(object target)
{
if (IsReference)
{
if (IsListType)
{
foreach (object item in (IEnumerable)GetValue(target))
{
yield return (uint)item;
}
}
else
{
yield return (uint)GetValue(target);
}
}
else if (!IsPrimitiveType)
{
if (IsListType)
{
// No references if list is null
var value = GetValue(target);
if (value == null)
yield break;
foreach (object item in (IEnumerable)value)
{
var field = (Field)item;
if (field != null)
{
foreach (var formId in field.GetReferencedFormIds())
{
yield return formId;
}
}
}
}
else
{
var field = (Field)GetValue(target);
if (field != null)
{
foreach (var formId in field.GetReferencedFormIds())
{
yield return formId;
}
}
}
}
}