Yeah, I was thinking that you had to do it through Policies.Add(x => x.Conneg.AddWriter<...>()) but you're saying you can just go through Policies.Add(x => x.ModifyBy(x => x.Input...)). That was what was confusing me, I think I get it now. I haven't done a whole lot with modifying the behavior chain other than wrapping behaviors so this is a little new to me.
On the serialization:
First, I need to customize how DateTime's and enum's are de/serialized for both xml and json. We need to have DateTime's be ISO 8601 (Supporting UTC) and enum's to be the string representation. There are some quirks with both serializers that cause some inconsistencies in our API.
Second, we have some custom binding that we do. I currently have a little reader "behavior chain" setup (Not a fubu one) that lets us pass the incoming json through a couple of reader behaviors. The reader "behavior" decides if it can deserialize it or not and if so handles it and passes the input model. We have default reader "behavior" that just does the normal deserialization if the custom ones don't handle it. The reason we are doing it at this point is we are potentially deserializing the json request to a type other than the input type. That's why the ReaderChain piqued my interest, looked similar to what we were doing at first glance. But there may be a better way to do this, no idea.