This line fails: public static EnumDesc<Direction>[] DirectionDesc = EnumDesc<Direction>.All; This is the EnumDesc declaration: ... public class EnumDesc<T> { .. public static EnumDesc<T>[] All { get { ... } }; This is the error: error CS0030: Cannot convert type `EnumDesc<T>[]' to `EnumDesc<Direction>[]'