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/

  • 相关阅读:
    LocalDate/LocalDateTime与String的互相转换示例(附DateTimeFormatter详解)
    MyBatis中的JdbcType映射介绍
    mybatis的一些特殊符号标识(大于,小于,等于,不等于)
    c++多重继承
    tensorflow 一些好的blog链接和tensorflow gpu版本安装
    java中Arraylist复制方法
    java/python中的队列
    java中的函数参数
    linux命令
    python爬某个网站的图片
  • 原文地址:https://www.cnblogs.com/suzh/p/2145698.html
Copyright © 2011-2022 走看看