The tracing layer wraps a trace-aware object around major services and formatters. Apps that need to downcast a service or formatter need a way to ask for the inner object instance.
I recommend we design for a general purpose wrapping API, not just tracing. Consider something like IWrappable<T> and Wrappable.Unwrap<T>(object). Make trace wrappers implement this and make MediaTypeFormatterCollection aware to use it.
Also fix OData code to use this when asking for the model from the ODataMediaTypeFormatter.
I recommend we design for a general purpose wrapping API, not just tracing. Consider something like IWrappable<T> and Wrappable.Unwrap<T>(object). Make trace wrappers implement this and make MediaTypeFormatterCollection aware to use it.
Also fix OData code to use this when asking for the model from the ODataMediaTypeFormatter.