Я использую webapi / Json.net со смесью DefaultValues и конструкторов, что мне нужно, потому что DefaultValue не работает для массивов.
Я обнаружил, что мой конструктор игнорируется. Если я устанавливаю точку останова в своем классе, она останавливается в конструкторе, но когда он прибывает в контроллер, массив становится пустым.
Можно ли смешать два способа инициализации свойств с Json.net
public class MyClass
{
[DefaultValue("U")]
public string P1 { get; set; }
public string[] P2 { get; set; }
public MyClass()
{
P2 = new string[] { @"X" };
}
}
[HttpPost]
public void FundInfo(MyClass my1)
{
// my1.P2 is am empty array
}
Вот мои настройки webapi для json.
public static void Register(HttpConfiguration config)
{
config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
config.Formatters.JsonFormatter.SerializerSettings.DefaultValueHandling = DefaultValueHandling.Populate;
config.Formatters.JsonFormatter.SerializerSettings.ConstructorHandling = ConstructorHandling.Default;
}