A programming model that allows flexibility in the behavior of a program
not possible in traditional API call
-based programming. Custom attributes
to give classes
extra information that extend the definition of a data type’s
behavior. The attribute’s values are determined by programmers at design time, and can be reconfigured at runtime
by users and other programs without the need for code changes or recompilation.
Also see reflection.