title: Why is a Nullable<T> not a valid Custom Attribute Parameter when T is?
body: <p>If I have an enum like this</p>
  
  <pre><code>public enum Hungry
  {
      Somewhat,
      Very,
      CouldEatMySocks
  }
  </code></pre>
  
  <p>and a custom attribute like this</p>
  
  <pre><code>public class HungerAttribute : Attribute
  {
      public Hungry HungerLevel { get; set; }
      public Hungry? NullableHungerLevel { get; set; }
  }
  </code></pre>
  
  <p>I can do this</p>
  
  <pre><code>[Hunger(HungerLevel = Hungry.CouldEatMySocks)]
  public class Thing1
  </code></pre>
  
  <p>but I can't do this</p>
  
  <pre><code>[Hunger(NullableHungerLevel = Hungry.CouldEatMySocks)]
  public class Thing2
  </code></pre>
  
  <p>It generates an error that says "'NullableHungerLevel' is not a valid named attribute argument because it is not a valid attribute parameter type".</p>
  
  <p>Why is that not allowed? I understand that fundamentally it just isn't on the list of accepted types. The valid types seem to be primitives, enums, string, type, and one dimensional arrays of the preceding types.</p>
  
  <p>Is this just an old rule that did not get updated when Nullable came along?</p>