[Проблема]
Создав общую библиотеку, которая должна быть развернута на компьютере-сервере и клиентской машине, как я могу общаться между клиент-сервер с классами, предоставляемых библиотекой ?Как вернуть пользовательские объекты с WebServices
Передача информации через веб-службы не работает, поскольку сериализованный объект, возвращаемый веб-службой, является классом webservice, который не преобразуется в общую библиотеку.
Я использую веб-службы неправильно? Есть ли способ лучше?
[Пример]
MyLibrary.cs и SubLibrary.cs находится в общей сборки, который должен быть использован приложением клиента.
MyLibrary.cs
public class MyLibrary
{
private SubLibrary sublib = new SubLibrary();
public class MyLibrary()
{
}
public string GetValue()
{
return sublib.GetValue();
}
}
SubLibrary.cs
public class SubLibrary
{
private string str = "Hello World";
public SubLibrary()
{
}
public string GetValue()
{
return str;
}
}
WebService.asmx.cs
[WebMethod]
public MyLibrary GetInfo()
{
return new MyLibrary();
}
Клиент App
private void GetInfo_Click(object sender, System.EventArgs e)
{
WS.WebService services = new WS.WebService();
MyLibrary info = services.GetInfo(); // This of course doesn't convert.
MessageBox.Show(info.GetValue());
}
+1 @Marc: Спасибо за понимание и альтернативные варианты. Это правда, что это большая боль в 1.1. –
@Marc: Если вы были на .NET 3.5, как бы вы использовали частичные классы или методы расширения для преобразования объектов? –
С частичными классами вы можете добавить статические операторы преобразования (явные/неявные). С помощью метода расширения вы можете добавить методы 'ConvertToFoo()' и т. Д. –