Я не знаю, ожидаемое ли это поведение или нет.Я бы сказал, что это ожидается для входных параметров (потому что вы не можете установить их значения), но не для выходных параметров.Так что я бы сказал, что это ошибка для выходного параметра.И вот пример, иллюстрирующий проблему:
Модель:
public class Product
{
public Product()
{
Prop1 = "prop1 value";
Prop2 = "prop2 value";
Prop3 = "prop3 value";
}
public string Prop1 { get; set; }
[ReadOnly(true)]
public string Prop2 { get; set; }
public string Prop3 { get; protected set; }
}
Контроллер:
public class ProductsController : ApiController
{
public Product Get(int id)
{
return new Product();
}
}
Запрос:
api/products/5
Результат:
{"Prop1":"prop1 value","Prop2":"prop2 value"}
Таким образом, если свойство не имеет общедоступного установщика, оно не сериализуется, что не кажется нормальным, поскольку в этом случае в качестве вывода используется класс Product
.
Iпредложил бы открыть заявку на подключение, чтобы Microsoft могла исправить это до выпуска, или, по крайней мере, сказать, что это сделано специально.