Già dalle prime versioni dei prodotti Sharepoint era possibile sviluppare delle web part con delle zone personalizzabili di configurazione che vengono posizionate nella finestra di configurazione generale di ogni web part.
Nella versione 2003 di sharepoint portal server queste zone erano chiamate ToolPart. Qunidi all'interno della web part era necessario eseguire l'override del metodo GetToolParts() e creare un'array di oggetti di tipo ToolPart, all'interno del quale inserire un'istanza di un oggetto basato su una nostra classe personalizzara, che eredita dalla classe ToolPart.
Ora, nella versione 3.0 di Windows Sharepoint Service e in MOSS 2007 le cose sono leggermente cambiate.
Innanzitutto non si parla più di ToolPart ma di EditorPart, in conformità con quanto aggiunto nella versione 2.0 di ASP.NET riguardo proprio le web part.
Quindi, per creare una nuova sezione di configurazione, dobbiamo prima sviluppare un nuova classe, ereditando dalla classe EditorPart (del namespace System.Web.UI.WebControls.WebParts) ed esesguire l'overload dei metodi ApplyChanges e SyncChanges:

public class CopyrightEditorPart : EditorPart
{
    public override bool ApplyChanges()
    {
        //throw new Exception("The method or operation is not implemented.");
        return true;
    }
 
    public override void SyncChanges()
    {
        //throw new Exception("The method or operation is not implemented.");
    }
 
    protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
        writer.Write("My custom editor part");
    }
}

Poi, all'interno del codice della nostra web part, dobbiamo eseguire l'overload del metodo CreateEditorParts() in modo tale da ritornare una collezione di oggetti di tipo EditorPart per la visualizzazione delle sezioni di configurazione custom.

public override EditorPartCollection CreateEditorParts()
{
    List<EditorPart> parts = new List<EditorPart>();
    CopyrightEditorPart copy = new CopyrightEditorPart();
    copy.ID = "copyright";
    parts.Add(copy);
 
    return new EditorPartCollection(parts);

}


Così il gioco è fatto !