I am writing code that will populate the Margin, Padding and BorderThickness properties of classes in the System.Windows.Documents namespace. Each of these properties accepts a value in the form of a System.Windows.Thickness, which is a struct.
However, I wish to associate some additional data with each of these property assignments, which may subsequently be retrieved by my code. If Thickness were a class, I would inherit from it and define properties in the subclass to store my additional data items. But since it is a struct, inheritance is not possible.
Is there any practical way to achieve this, while maintaining type-compatibility with the properties I am populating?
Thanks for your ideas,
Tim
There are no good alternatives.
Depending on what you are trying to do, you could perhaps define your own class with the properties you need, and define the implicit conversion operator to do a implicit conversion to the correct struct type. Then you would be able to pass in your class to all methods expecting a Thickness parameter.
This would go against the recommendation of using the implicit conversion operator, though, since it states that the implicit conversion should not lose any information. You will not be able to get the Thickness back from the property you are reading, and see the extra information you attached.
This is how you could implement it:
However, you are probably better off by storing the extra data elsewhere. How to do it would depend on your needs and application.