Provides a framework for defining types that can be used to pass constant & static values as generic type arguments. These can be used in static contexts (such as static constructors & static methods), reduce the need to pass arguments through instance constructors, add compile-time validation, and more.
Handle cases where a const type argument's value is null.
Cache the value of a const type argument cast to U. This could be done through an inner with the type parameter U (e.g. ValueAsCache). With this implementation, there would need to be a way to flag U when it can't be cast to.
Add functionality to get what well-known const type a given type is, if at all.
Add functionality to determine what framework kind a give type is, if at all.
Add functionality to get what const type parameter constraints a given __ (discard).
Create methods that return IAttributeInfo, IConstTypeArgInfo, IGenericParameterInfo, ITypeInfo, and any other similar interface that is needed.
Implement IsMisleadingType method (i.e. implements a const type marker interface but not more derived interface, such as IConstTypeArg & IConstTypeArg).
Add method that checks whether or not a const type argument implements multiple const type interfaces with different types of values.
Add method to determine if a type of const type argument can be instantiated (i.e. implements IConstTypeArg<T, TSelf>)
Add methods to compare const type arguments to each other, such as equality.
See #23 for more information.