Every object can have an extension dictionary, which can contain an arbitrary set of AcDbObject objects. Using this mechanism, several applications can attach data to the same object. The extension dictionary requires more overhead than xdata, but it also provides a more flexible mechanism with higher capacity for adding data.
For an example of using an extension dictionary to attach an arbitrary string to any AcDbObject, see the edinvent program in the ObjectARX samples\database\dataxtsn directory.