Persistere il valori di una proprietà custom di una DataGridViewColumn custom

Dovendo realizzare una DataGridViewColumn di tipo MaskedTextBox e NumericUpDown ho fatto un salto su Msdn dove ho trovato questo esempio per colonne MaskedTextBox:

DataGridView Custom Column Sample 
http://msdn2.microsoft.com/en-us/library/ms180996.aspx

tutto bene ma quando da IDE di tenta di impostare le proprietà custom il valore non viene memorizzato.

Dopo aver letto questo thread su Microsoft Connect:
DataGridView Column Editor code generation issue
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=108961
stavo quasi per considerarlo un bug, ma ne ero veramente poco convinto, infatti sulle colonne native del framework non ci sono problemi.

Poi ho provato questo esempio:
Sviluppo di una cella e colonna NumericUpDown personalizzate per il controllo DataGridView
http://www.microsoft.com/italy/msdn/library/framework/winf_numericupdown.mspx
e qui il problema non si presentava e dopo aver confrontato il codice e fatto vari tentativi ho capito che la soluzione stava nell’implementare il metodo Clone nella DataGridViewTextBoxCell custom.

Public Overrides Function Clone() As Object
  Dim dataGridViewCell As MyDataGridViewNumericUpDownCell = CType(MyBase.Clone, MyDataGridViewNumericUpDownCell)
  If (Not (dataGridViewCell) Is Nothing) Then
    dataGridViewCell.DecimalPlaces = Me.decimalPlacesValue
    dataGridViewCell.Increment = Me.incrementValue
    dataGridViewCell.Maximum = Me.maximumValue
    dataGridViewCell.Minimum = Me.minimumValue
    dataGridViewCell.ThousandsSeparator = Me.thousandsSeparatorValue
  End If
  Return dataGridViewCell
End Function

Senza questo metodo le proprietà della colonna DecimalPlaces, Increment, Maximum, Minimum, ThousandsSeparator non vengono memorizzare se modificate da IDE.

Secondo me vedendo vari esempi in rete di implementazione di colonne custom si fatto un passo avanti rispetto al DataGrid, ma non è ancora una passeggiata realizzare delle buone column custom, insomma guardando l’implementazione del secondo link si vede che il codice da scrivere è una vagonata e in alcuni casi si fa uso di API.
Morale c’è sempre la sensazione di avere fatto una column che si può dare per buona solo sulla base dei test effettuati e se la si deve modificare si spera di non introdurre nuovi bug.

Credo che oltre agli esempi servirebbero linee guida a cui attenersi rigorosamente per la creazione di Column custom (cosa implementare e sopratutto perchè).