title: Inheritance security rules violated while overriding member - SecurityRuleSet.Level2
body: <p>I have a class that inherits from Exception.  In .NET 4, I started receiving a runtime error:</p>
  
  <blockquote>
    <p>Inheritance security rules violated
    while overriding member: MyBusinessException.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)'. Security
    accessibility of the overriding method
    must match the security accessibility
    of the method being overriden.</p>
  </blockquote>
  
  <p>I think the issue is caused by the fact that I am overriding GetObjectData.</p>
  
  <p>I know one answer for resolving the issue is to set the SecurityRuleSet:</p>
  
  <pre><code>[assembly: SecurityRules(SecurityRuleSet.Level1)]
  </code></pre>
  
  <p>This is not an acceptable answer, I'd like to know how to fix the issue without having to relax the default security rules in .NET 4.</p>