Estou usando o DataContractJsonSerializer ou o Json.net na minha web api 2

depois de perguntar issoquestão Eu estava tentando entender todas essas coisas de serialização no web api 2 e eu li issohttp://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization

Mas agora estou confuso

1 No meu webapiconfig eu não tenho essas linhas

var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.UseDataContractJsonSerializer = true;

Então eu suponho que estou usando o serializador Json.net, que é o padrão. De qualquer forma eu ainda posso usar o DataContract em uma classe e, portanto, apenas as propriedades decoradas com o atributo DataMember serão serializadas. Essas duas hipóteses estão corretas?

2 Se eu não decorar uma classe com DataContract, todas as propriedades serão serializadas. Isso acontece tanto com o Json.net quanto com o DataContractJsonSerializer

3 Se eu mudar (como na pergunta que eu coloquei) o resolvedor do serializador ainda o usa, é porque é uma coisa do Json.net ou uma coisa não está relacionada a outra? porque se eu usar isso no Global

var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.UseDataContractJsonSerializer = true;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

mesmo que não apresente qualquer problema, parece que não o capta (nem usa um contracroleador personalizado)

3 No caso de ter uma classe derivada de outra e decorar a matriz com DataContract, parece-me que tenho que decorar as propriedades da criança com DataMember para serializá-la. Ou estou fazendo algo errado?

obrigado

questionAnswers(1)

yourAnswerToTheQuestion