title: Can't update a sharepoint item while check fields on existing list inside delegates
body: <p>I had the next code inside the delegate to create fields</p>
  
  <pre><code>delegate(SPList list)
  {
      list.Fields.Add(...);
      //I teared off the other same strings 
  }
  </code></pre>
  
  <p>I invoked this code in the next way</p>
  
  <pre><code>modifyFunction.Invoke(list);
  
  //modifyFunction is a previous delegate, that was declared like
  //delegate void ModifyList(SPList list); 
  </code></pre>
  
  <p>So, everything was fine, when I try to update item in this list.
  But I had to dynamically add fields to the list soon. So, I changed my delegate like</p>
  
  <pre><code>delegate(SPList list)
  {
      CheckMethod(list);
  }
  
  void CheckMethod(SPList list)
  {
      if (!list.Fields.ContainsField(...))
      {
          list.Fields.Add(...);
      }
  }
  </code></pre>
  
  <p>After this modification (there was no modification in the code anymore) while trying to update an item of this list I have the next exception</p>
  
  <pre><code>Invalid data has been used to update the list item. The field you are trying to update may be read only
  </code></pre>
  
  <p>Such decisions like SPWeb.AllowUnsafeUpdates or SPSecurity.RunWithElevatedPrivileges didn't give any positive results. Where is the trick? I'll appreciate any help. Thank you.  </p>