I've spent the past few days trying to subclass Appointment to add additional data properties to it, but to no avail. (We need to add a dynamic list of string int pairs to the Appointment, which, since they are dynamic, can't be done with the standard declarative attributes set).
So, on my subclass, I overrode Clone, the deserialization constructor and GetObjectData, LoadViewState, and SaveViewState, and created an appropriate AppointmentFactory for the scheduler to use. However, my additional data values were never making it back to the Insert or Update call on my provider.
Having a look at the code using Reflector, I see that my values are likely getting lost during the internal call to LoadFromDictionary. There are no virtual functions there for me to inject my data values into the load, so they are never getting restored.
So, just for my own sanity, I wanted to confirm that yes, given the way Scheduler is currently written, subclassing Appointment in this way is impossible, and it's okay to stop trying to make this work. :)
I am going to fall back and use one of the standard attributes as a delimited string of the values, but I was hoping for the more elegant solution.