Sharepoint 在SP 2007中生成内容类型时出错

Sharepoint 在SP 2007中生成内容类型时出错,sharepoint,events,Sharepoint,Events,我有一个事件处理程序,它捕获ItemAdding事件并动态更改内容类型。这是我构建内容类型的代码: SPContentType baseContentType = web.AvailableContentTypes["Folder"]; SPContentType type = new SPContentType(baseContentType, web.ContentTypes, "Custom Folder"); // Add fields to new content type AddF

我有一个事件处理程序,它捕获ItemAdding事件并动态更改内容类型。这是我构建内容类型的代码:

SPContentType baseContentType = web.AvailableContentTypes["Folder"];
SPContentType type = new SPContentType(baseContentType, web.ContentTypes, "Custom Folder");

// Add fields to new content type
AddField(ref type, "User", "Owner");
AddField(ref type, "DateTime", "Date");
AddField(ref type, "Text", "Description");
AddField(ref type, "Text", "Justification");
AddField(ref type, "User", "Users");

list.ContentTypes.Add(type);
list.Update();
…剪断

void AddField(ref SPContentType contentType, string fieldType, string fieldName)
{
    SPField field = new SPField(contentType.Fields, fieldType, fieldName);
    if (fieldName.Equals("Users"))
        ((SPFieldUser)field).AllowMultipleValues = true;
    field.Update();
    contentType.Fields.Add(field); // Exception thrown here
    SPFieldLink fieldLink = new SPFieldLink(contentType.Fields[fieldName]);
    contentType.FieldLinks.Add(fieldLink); 
    contentType.Update();
}
在线:contentType.FieldLinks.AddfieldLink

我得到一个ArgumentNullException:值不能为null。参数名称:g

有人知道这意味着什么,或者知道我做错了什么吗?提前谢谢

堆栈跟踪:

在Microsoft.SharePoint.SPField.UpdateCoreBoolean bToggleSealed上 在Microsoft.SharePoint.SPField.Update上 在ChangeContentTypeEventHandler.ChangeContentTypeEventHandler.AddFieldsContentType&contentType,String fieldType,String fieldName
在ChangeContentTypeEventHandler.ChangeContentTypeEventHandler.ItemAddingSPItemEventProperties属性中,您的错误不在当前代码中。它在堆栈跟踪的下一步。你能发布一个完整的堆栈跟踪吗

编辑:

对于完整跟踪堆栈,这意味着内容类型当前正在使用。您最需要做的可能是指定级联选项

比如
contentType.updaterue,true

感谢您的回复。我已将堆栈跟踪添加到原始问题。我对代码做了一些更改,对AddField方法做了一些更改,现在我在field上得到了一个SPException。更新:对于与列表无关的字段,此功能不可用