C#, VS 2012, .NET 4.5+
Моя программа получает строки, являющиеся сериализацией объектов некоего класса в SOAP. Самого этого класса у меня нет.
<SOAP-ENV:Envelope xmlns:xsi="..........">
<SOAP-ENV:Body>
<a1:DeviceServer_x002B_Details id="ref-1" xmlns:a1="http://schemas.microsoft.com/clr/nsassem/SecretName1.SecretName2.CommonLibrary.Classes/CommonLibrary%2C%20Version%3D2.7.5753.35231%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Dnull">
<host id="ref-3">Domnitch</host>
<port>50116</port>
<protocol>tcp</protocol>
<deviceTypeEnum>Quest</deviceTypeEnum>
<timePeriod_Normal>2000</timePeriod_Normal>
<timePeriod_Resend>1000</timePeriod_Resend>
<timePeriod_Disconnect>5000</timePeriod_Disconnect>
<resendCount>2</resendCount>
</a1:DeviceServer_x002B_Details>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Очень хочется извлечь данные из строки в некий самодельный класс примерно так:
public class MyClass
{
public class Details
{
[SoapElement("host")]
public string Host { get; set; }
[SoapElement("port")]
public int Port { get; set; }
}
public Details GetDetail(string s)
{
var formatter = new SoapFormatter();
var reader = new MemoryStream(Encoding.Unicode.GetBytes(value));
var detail = (Details)formatter.Deserialize(reader);
reader.Close();
return detail;
}
}
Не получается — при исполнении SOAP заявляет, что не знает сборки SecretName1.SecretName2.CommonLibrary.Classes... и так далее.
Взять эту сборку мне неоткуда, создавать ее самому крайне громоздко.
Нет ли какого средства — задать какие-то атрибуты к примеру?
Я использовал Paste Special... и получил работающий класс.
После двух часов работы Resharper'ом класс стал еще и читабельным
Большое спасибо,
koodeer