Dee*_*ons 1 c# silverlight web-services class asmx
从ASMX服务返回的对象在Silverlight应用程序中使用.类具有方法,但ASMX WebMethod的结果不显示对象的方法.
这是我的课
public class Dog
{
public string Name{get;set;}
public void Bark();
}
Run Code Online (Sandbox Code Playgroud)
这是WebMethod
[WebMethod]
public List<Dog> Findlabrador()
{
blah blah blah
return list_of_labrador;
}
Run Code Online (Sandbox Code Playgroud)
银光代码
void LabradorFetchCompleted(object sender, LabradorFetchCompletedEventArgs e)
{
var list_of_labrador = e.Result;
foreach(var labradorDog in list_of_labrador)
{
labradorDog.Bark();
//** WTH my labrador can't BARK** Bark method is not shown in intellisense there is compilation error if i explicitly specify
}
}
Run Code Online (Sandbox Code Playgroud)
好吧,嗯,让我说出你的话.以下是重现问题的步骤
创建一个Silverlight应用程序项目(让VS创建网站来托管应用程序)
创建一个Silverlight类库,在其中创建Dog类
将Silverlight类库编译为assembly(Dog.dll)
将Dog.dllsilverlight程序集的引用添加到silverlight应用程序项目中
将WebService应用程序添加到项目中(DogService.asmx注意asmx扩展名)
添加对Silverlight Dog.dll程序集的引用DogService
hardcoded List<Dog>从其中的WebMethod 返回类
添加从Service到Silverlight应用程序的引用,创建代理客户端的实例并调用该方法
看着你的狗也不能吠:(
方法永远不会被序列化.只有数据.您的方法,事件,索引器,构造函数等永远不会被序列化.
无论如何,您不应该使用ASMX服务.请改用WCF.除其他外,WCF使您能够在客户端和服务之间共享数据类型.这将允许类似"序列化方法"的东西:可以在客户端和服务器上使用相同的方法.
| 归档时间: |
|
| 查看次数: |
276 次 |
| 最近记录: |