• [Silverlight]WCF RIA SERVICE如何返回自定义类型(非Entity)


    用WCF Ria Service如何返回一个非Entity实体的自定义类型呢?其实很简单,就是用WCF的方式定义可序列化的类型即可。方法:在SilverlightApplication1.Web项目添加一个空的Domain Service,名字叫MyService,里面加一个写一个Invoke的方法。注意这个DomainService需要加[Invoke] 属性标明这不是一个Entity相关的操作,也不是Query,Insert,Update,Delete。详细解释请参考MSDN这个页面

    [Invoke]的方法可以返回任何类型,我们这里就让它返回非Entity的自定义的类型好了。首先:

    顶一个自定义类型

    然后:

    写一个DomainService
    1 [EnableClientAccess()]
    2 public class MyAppService : DomainService
    3 {
    4 [Invoke]
    5 public MyTestClass Test(string a, string b)
    6 {
    7 //TODO: ....
    8 return new MyTestClass(); //返回自定义类型
    9 }
    10
    11 protected override void OnError(DomainServiceErrorInfo errorInfo)
    12 {
    13 base.OnError(errorInfo);
    14
    15 Logger.LogException(errorInfo.Error.Message, errorInfo.Error.StackTrace);
    16 }
    17 }

    编译之后,在RiaService对应的前台Silverlight项目(具体可以查看project的属性,有WCF Ria Service Link),可以看到隐藏的文件:Generated_Code\*.web.g.cs。里面自动生成了WCF的本地代理和本地类型。然后在Silverlight里面可以这样调用:

    *.xaml.cs
    1 MyTestContext ctx = new MyTestContext();
    2
    3 ctx.Test("a","b", invokeOperation =>
    4 {
    5 if (invokeOperation.HasError)
    6 {
    7 this.label1.text = invokeOperation.Error.Message;
    8 }
    9 else
    10 {
    11 MyTestClass result = invokeOperation.Value;//得到自定义的类型的结果
    12 //TODO:.....
    13 }
    14 }, null);

    发布并部署到IIS也没有问题,只要加.xap和.xaml两个MIME类型就行了

    转自:http://www.cnblogs.com/mainz/

  • 相关阅读:
    ACM成长之路
    洛谷P1047 校门外的树
    洛谷P1046 陶陶摘苹果
    2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 F题
    图论:POJ2186-Popular Cows (求强连通分量)
    DFS:POJ1562-Oil Deposits(求连通块个数)
    DFS:POJ3620-Avoid The Lakes(求最基本的联通块)
    map函数的应用:UVa156-Ananagrams
    set的应用:UVa10815-Andy's First Dictionary
    水题:UVa253-Cube painting
  • 原文地址:https://www.cnblogs.com/suzh/p/2145698.html
Copyright © 2020-2023  润新知