=DeaD= писал(а):Только не вкурил откуда "This is my State!" берётся, в исходном проекте такого вроде нету?
<?xml version="1.0" encoding="utf-8" ?>
- <ServiceTutorial1State xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:d="http://schemas.microsoft.com/xw/2004/10/dssp.html" xmlns="http://schemas.tempuri.org/2006/06/servicetutorial1.html">
<Member>
This is my State!</Member>
</ServiceTutorial1State>
- Код: Выделить всё • Развернуть
private string _member = "This is my State!";
[DataMember]
public string Member
{
get { return _member; }
set { _member = value; }
}
выдержка из "Service Tutorial 1 (C#) - Creating a Service"
Атрибут DataContract определяет, что класс ServiceTutorial1State является XML-сериализуемым (кто не знает о сериализации - см.ниже). Вместе с тем, что тип (класс) отмечен атрибутом DataContract, требуется обязательно отметить отдельные свойства и поля класса как XML-сериализуемые используя атрибут DataMember. Только публичные свойства и поля класса объявленные с таким атрибутом будут сериализоваться. Также, для того, чтобы разрешить сериализациюсвойств класса, для них должны быть реализованы оба - set и get методы.
Сериализация - это способ передать состояние экземпляра класса по каналу связи (например - http) или сохранить его на диске. Затем такой экземпляр можно восстановить. Фактически это сделано так (например XML-сериализация): значения всех разрешенных для сериализации свойств и поля класса экземпляра, который нужно сохранить или передать, записываются в текстовом виде в файл или поток между текстовыми-же метками.
В примере наверху значение "This is my State!" свойства Member сохраняется в текст "<Member>This is my State!</Member>". Для нестроковых типов - производится конвертация - например, бинарное (boolean) true конвертируется в строку "True".
Также в файле (или потоке) присутствует информация о самом типе (классе), которая позволяет при получении/восстановлении полученных сериализованных данных:
создать новый экземпляр такого типа (класса), а затем его свойствам и полям, указанным в полученном xml файле/потоке присвоить значения, взятые от-туда же. Числовые, логические (boolean) и прочие типы, отличные от строкового - конвертируются назад.
Так программы (и сервисы) могут обмениваться экземплярами сложных типов данных.