zoukankan      html  css  js  c++  java
  • [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/

  • 相关阅读:
    【考试反思】联赛模拟测试16
    【考试反思】联赛模拟测试15
    【考试反思】联赛模拟测试14
    【考试反思】联赛模拟测试13
    【学习笔记】震惊,全机房都会分块了,就我没有
    挂分宝典
    「计数」客星璀璨之夜 + 大佬
    第五阶段反思
    「板子」线段树维护单调栈
    阶段反思
  • 原文地址:https://www.cnblogs.com/suzh/p/2145698.html
Copyright © 2011-2022 走看看