Возможно ли для веб-службы .NET принимать неизменяемый объект (или объект, содержащий ссылки на неизменяемые объекты) в веб-методе?
Например, если это мой метод веб-сервиса:
public class MyWebService : System.Web.Services.WebService
{
[WebMethod]
public void SetStatus(StatusData data)
{
// do something
}
}
и StatusData
содержит неизменяемое свойство. Сервер вызывает System.Web.Services.Protocols.SoapException
при вызове метода:
Невозможно создать временный класс (результат = 1).
Ошибка CS0200: Свойство или индексатор 'TestProject.Entities.StatusData.Id' нельзя назначить - оно доступно только для чтения
Могу ли я по-прежнему использовать неизменяемые объекты или это единственный способ сделать это для преобразования всего в изменяемые DTO?
[Изменить]
Очевидно, я не говорю о строках, поскольку string
является базовым типом в .Net и действительно является исключением для этой проблемы. Например, XmlSerializer
не будет работать (без явной реализации IXmlSerializable
) для любого другого неизменяемого класса.
Но я надеялся, что смогу избежать написания вручную нескольких изменяемых DTO (хотя само отображение можно автоматизировать).