The public surface of the POCOs has grown substantially over the years. This makes many features hard to discover. Also, to create your own resource classes or subclasses is hard because of the number of generated methods that need to be done manually. To get a sense of this problem, take a look at the public surface.
Things to consider:
Children() and NamedChildren(), which have been replaced by GetElementPairs (we could possibly stay backwards compatible by providing these as extension methods
IDeepComparable - could be turned into separate subclasses of the .NETs Comparator class and implement the .NET interfaces
IDeepClonable - could be based on using the GetElementPairs/IDictionary interface to clone.
This is slower, but would require less hand-written code. This of course, is certainly true for the IDictionary implementation itself, which depends heavily on generated code. One possibility could be to enable Custom resources using a separate CustomResource subclass that implements these methods by reflection (or even on-the-fly generated IL, but I don't want to think about that).
In general, we should go over the pocos and see which things can be implemented based on GetElementPairs or are old designs and no longer necessary.
The public surface of the POCOs has grown substantially over the years. This makes many features hard to discover. Also, to create your own resource classes or subclasses is hard because of the number of generated methods that need to be done manually. To get a sense of this problem, take a look at the public surface.
Things to consider:
This is slower, but would require less hand-written code. This of course, is certainly true for the IDictionary implementation itself, which depends heavily on generated code. One possibility could be to enable Custom resources using a separate CustomResource subclass that implements these methods by reflection (or even on-the-fly generated IL, but I don't want to think about that).
In general, we should go over the pocos and see which things can be implemented based on GetElementPairs or are old designs and no longer necessary.