class PaintContext
{
protected:
ref class NativePaintContext^ _nativePaintContext;
};
this allows the PaintContext header to have no knowledge whatsoever of the underlying native implementation of the paint context. all platforms can share the same headers without #ifdef macro madness everywhere. this comes at the cost of an extra indirection (well 2 now that it is fucking sealed), but i don't care, none of this code is performance sensitive.. if it is.. you've got a design problem.
now the big question is will i get sick of writing stupid method wrappers override my distain for macros all over the place?