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/

  • 相关阅读:
    【华为云技术分享】云小课 | 磁盘容量不够用?小课教你来扩容!
    什么时候用用value,什么时候用innerHTML?
    零碎知识点总结
    hnctf安恒--蜘蛛侠呀
    sqli-labs Less-11 and Less-12
    sql注入--基于报错的注入
    ‘百度杯’十月场web ---login
    “百度杯”CTF比赛 九月场---123
    百度杯 ctf 九月场---Text
    【迎圣诞,拿大奖】+流量分析+Writeup分享
  • 原文地址:https://www.cnblogs.com/suzh/p/2145698.html
Copyright © 2011-2022 走看看