The types of positional and named parameters for an attribute class are limited to the attribute parameter types, which are:
One of the following types: bool, byte, char, double, float, int, long, sbyte, short, string, uint, ulong, ushort.
The type object.
The type System.Type.
An enum type, provided it has public accessibility and the types in which it is nested (if any) also have public accessibility.
Single-dimensional arrays of the above types.
From the C# spec:
> 17.1.3 Attribute parameter types
> The types of positional and named parameters for an attribute class are limited to the attribute parameter types, which are:
> · One of the following types: bool, byte, char, double, float, int, long, sbyte, short, string, uint, ulong, ushort.
> · The type object.
> · The type System.Type.
> · An enum type, provided it has public accessibility and the types in which it is nested (if any) also have public accessibility (§17.2).
> · Single-dimensional arrays of the above types.