|
using System;
using System.Collections.Generic;
namespace TreeStructuredEnumerations
{
public class EnumUtility
{
public static bool IsChild<TType>(TType child, TType parent)
{
Type enumType = typeof(TType);
Object[] attributeList = enumType.GetCustomAttributes(typeof(StructuredAttribute), true);
if (attributeList.Length > 0)
{
StructuredAttribute attribute = (StructuredAttribute)attributeList[0];
int span = attribute.Span;
int parentIndex = (int)Convert.ChangeType(parent, typeof(int));
int childIndex = (int)Convert.ChangeType(child, typeof(int));
int index = childIndex / span;
return (index == parentIndex && childIndex != parentIndex);
}
return true;
}
public static List<TType> CreateList<TType>(TType parent)
{
List<TType> result = new List<TType>();
Type enumType = typeof (TType);
TType[] enumValues = (TType[]) Enum.GetValues(enumType);
foreach (TType enumValue in enumValues)
{
if (IsChild(enumValue, parent))
{
result.Add(enumValue);
}
}
return result;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.