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/

  • 相关阅读:
    ubuntu 搭建 php 环境
    【转】送给和我一样曾经浮躁过的PHPer程序猿,希望有帮助
    thinkphp iis下去掉index.php
    windows定时执行PHP的技巧
    js 生成随机数字的方法
    Linux下crontab命令的用法
    收藏下(设为收藏,设为首页)
    C#扩展方法的理解
    Win7 访问共享时输入正确密码仍然提示密码错误
    SQL Server 获取插入记录后的自动编号ID
  • 原文地址:https://www.cnblogs.com/suzh/p/2145698.html
Copyright © 2011-2022 走看看