[Problem]
Having created a shared library that is to be deployed on a server machine and client machine how do I communicate between the client-server with the classes provided by the library?
Transferring the information via webservices does not seem to work as the serialised object returned by the web service is a webservice class which does not convert to the shared library.
Am I using the webservices incorrectly? Is there a better way?
[Example]
MyLibrary.cs and SubLibrary.cs is in a shared assembly that is to be used by the client app.
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();
}
Client 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());
}
In short this is a pain in 1.1 (and partly 2.0 too). Assembly-sharing (or type-sharing) only really started being a feature in WCF (.NET 3.0). The proxies generated in 1.1 will never be directly compatible with the "actual" classes; you can share the same proxies between multiple services ("sharetypes" ?), but not with independent source files, IIRC.
And since it is C# 1.2 you have neither partial classes nor extension methods to cheat with to translate them.
Options (that I can see):
XmlSerializer
(less code, but not as quick)