title: DoCallBack CrossAppDomainDelegate behavior for non-static delegates
body: <p>Please consider the following piece of code:</p>
  
  <pre><code>// Create a new application domain
  AppDomain ad = AppDomain.CreateDomain("New domain");
  
  Worker work = new Worker();
  
  // if Worker class is marked as 'MarshalByRefObject', this will run in current
  // appdomain.
  // if Worker class is NOT marked as 'MarshalByRefObject' and is marked as
  // 'Serializable', this will run in a new appdomain.
  ad.DoCallBack(work.PrintDomain);
  // or ad.DoCallBack(new CrossAppDomainDelegate(work.PrintDomain));
  
  // But for static methods:
  // If ppp method is static, no marking is required and it will run in
  // a new AppDomain.
  ad.DoCallBack(Worker.ppp);
  </code></pre>
  
  <p>How do we explain this behavior of <code>DoCallBack</code>?</p>
  
  <ol>
  <li>Why is the non-static method <code>PrintDomain</code> executed in the current domain when the <code>Worker</code> class is marked <code>MarshalByRefObject</code>?</li>
  <li>Why is the non-static method <code>PrintDomain</code> executed in a new AppDomain when the <code>Worker</code> class is marked <code>Serializable</code>?</li>
  <li>Why doesn't the static method need any markings?</li>
  </ol>