How can I attach supplementary information to renderers or labels

Discussion created by Pimplebutt on May 18, 2012
My Environment:
[INDENT]Visual Studio 2008
.NET 3.5 (VB.NET)
ArcEngine 10 SP3

The 2 main things I use the map for are rendering and labeling.
I have noticed something very disturbing in the rendering and labeling classes and interfaces.

A few classes (shown here), and their associated interfaces (not shown here) include...

I allow my users to save their own predefined definitions for rendering and labeling, and give a name to their definitions.
I save those definitions to file in XML so I can bring them back at the next application run and allow them to pick renderers and labels from their predefined instances so that don't have to constantly remake definitions they like. We have over 100 defined for them, plus they can define their own.

I also attach my own supplementary information to their rendering and labeling classes i've made.

Basically, the problem is, I cannot find any way to maintain any link to this supplementary information once the class is put into ArcEngine.

None of these classes above, or any of their interfaces, have a .Tag() property [or something similar in purpose] to attach a guid or something I could use to uniquely identify a particular instance of IAnnotateLayerProperties, or IUniqueValueRenderer, etc, when I pull it back out of the map's collections, and thereby allow me to link it back to my supplementary information.

Is there something I'm missing or is this really not possible.
If it's not possible, why would they make such a horrific design decision to disallow any possibility of maintaining supplementary information on instance of their classes.