ASP.NET Web API y clase

Tengo una clase que está marcada con [Serializable]. Cuando lo devuelvo desde la API web, los nombres de los campos son todos funky.

Normalmente, el JSON devuelto es

[{"OrderId":797 ... 

JSON devuelto al usar [Serializable]

 [{"k__BackingField":797 ... 

Quiero marcarlo serializable para usar un BinaryFormatter para el almacenamiento en caché. ¿Hay alguna otra manera que escribir un serializador personalizado o hacer una clase gemela que no sea serializable y escribir el código del mono para “lanzar” entre los dos?

Solo necesita este trazador de líneas para que Json.NET ignore la semántica [Serializable] de nuevo:

 ((DefaultContractResolver)config.Formatters.JsonFormatter.SerializerSettings.ContractResolver).IgnoreSerializableAttribute = true; 

Una solución mejor para usted podría ser deshacerse de [Serializable] por completo, dejar de usar BinaryFormatter y usar un serializador diferente para hacer el almacenamiento en caché que quiera, como el serializador Json.NET, por ejemplo.