首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么WCF像我期待的那样返回myObject []而不是List <T>?

在.NET框架中,Windows Communication Foundation (WCF) 是一个用于构建面向服务的应用程序的框架。WCF 提供了一种方法来创建和处理服务操作,这些操作可以在不同的平台和编程语言之间进行通信。

在WCF中,数据传输对象通常使用数据协定来定义。数据协定允许将C#对象序列化为XML或JSON格式,以便在客户端和服务器之间进行通信。数据协定可以自动将C#对象转换为WSDL (Web Services Description Language) 格式,这使得WCF服务可以在不同的平台之间进行通信。

关于为什么WCF像我期待的那样返回myObject[]而不是List<T>,这是因为WCF使用数据协定来定义数据传输对象,而数据协定不支持泛型类型,例如List<T>。因此,在WCF中,最好使用非泛型的数组类型,例如myObject[],而不是泛型的List<T>。

总之,WCF使用数据协定来定义数据传输对象,而数据协定不支持泛型类型,因此最好使用非泛型的数组类型,例如myObject[],而不是泛型的List

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

c# dynamic用法_dynamic_cast详解

比如,即使你对GetDynamicObject方法返回对象一无所知,你也可以像如下那样进行代码调用,编译器不会报错: dynamic dynamicObject = GetDynamicObject...var实际上是编译期抛给我们“语法糖”,一旦被编译,编译期会自动匹配var 变量实际类型,并用实际类型来替换该变量申明,这看上去就好像我们在编码时候是用实际类型进行申明。...2.拯救接手接口没设计好代码倒霉孩子 比如这里有N个WCF服务,返回了N个对象集合,这几个对象没啥关系,其实又有一点关系,倒霉孩子又不会让Entity Framework生成类自动继承某个接口...List来模拟WCF中最普通调用。...//用本地方法替代WCF服务,您假装是通过WCF获取list Person.GetPersonList().ForEach((p) => list.Add(p));

61430

理论+实践:从原型链到继承模式,掌握 Object 精髓(一)

理论+实践:从原型链到继承模式,掌握 Object 精髓(一) • 在之前文章中,我们介绍了函数调用位置不同造成了 this 绑定对象不同,但对象到底是什么?为什么我们需要绑定他们呢?...对于数组来说这个区别非常重要,4 in [2, 4, 6] 结果并不是期待 True,因为 [2, 4, 6] 这个数组中包含属性名是 0、1、2,没有 4。...会检查给定属性名是否存在于对象中,不是原型链中,并且满足 enumerable: true; • Object.keys(...)...在 JavaScript 中,为什么 typeof null 会返回 object?...会检查给定属性名是否存在于对象中,不是原型链中,并且满足 enumerable: true; 6. Object.keys(...)

9310
  • yield在WCF错误使用——99%开发人员都有可能犯错误

    也就是说,一旦我们在一个返回类型为IEnumerable或者IEnumerable方式中通过yield return返回集合元素,意味着这个定义在方法中操作会被“延后执行”——操作真正执行不是发生在方法调用时候...,实际上并没有这回事,这与LINQ延迟加载更不是一回事。...如下面的代码片段所示,GetItems方法中没有发现我们定义代码,而是直接返回一个类型为d__0对象,看到这里相信读者朋友们知道为什么执行GetItems方法时候并没有文字输出真正原因了吧...例子 再次回到《yield在WCF错误使用——99%开发人员都有可能犯错误[上篇]》中提到例子,现在来解释为什么针对如下两段代码,前者抛出异常不能被WCF正常处理,而后者可以。...值得改进地方,但是目前来说为了避免这样问题,我推荐将WCF契约接口操作方法中返回类型定义成数组,不是IEnumerable或者IEnumerable(顺便说一下,WCF针对Array、List

    1.6K90

    Java 9 ← 2017,2019 → Java 13 ,来看看Java两年来变化

    优化可以只停止单个线程,不是停全部线程或一个都不停。 3、Java 11 Java 11 于 2018 年9 月25 日正式发布,可在生产环境中使用!...我们需要在赋值左侧提供显式类型,并在赋值右边提供实现类型,如下面的片段所示: MyObject value = new MyObject(); List list = new ArrayList()...; 在Java 10中,你可以这样定义对象: var value = new MyObject(); var list = new ArrayList(); 正如你所看到,本地变量类型推断将引入“var...”关键字,不需要显式规范变量类型。...每个版本都会有很多特性出来,这些特性中虽然没有像Java 8那样提供函数式编程这样重大改变,但是也提供了switch表达式和block text等大家期待已久特性。

    75520

    使用 BeanUtils.getProperty 获取属性时出现 NoSuchMethodException: Unknown property 问题分析

    明明有 aString 这个属性,为什么报错信息中说该类没有这个属性呢?...(myObject, "aString", true); System.out.println("value: " + value); } } 该工具方法设计不太完美,返回值是...,需要强制转换为泛型类型T return (T) field.get(instance); } } 为了提高工具类健壮性,我们还对该工具方法入参进行了判空。...通过对象 get 、set 方法来反向推断属性方案非常奇怪,但却如此“流行”。或许这是一种“规范”,但这很反直觉。属性名就应该是我们定义属性名称,不应该使用属性间接推断。...正是因为很多框架采用类似的方法,导致出现很多不符合预期行为:根据正确属性名获取属性时报错、将对象转为 JSON 字符串时因自定义了某 get 方法被识别出一些不存在属性等。

    1.7K40

    【JS】307- 复习 Object.assign 原理及其实现

    本篇文章会先介绍浅拷贝 Object.assign 实现原理,然后带你手动实现一个浅拷贝,并在文末留下一道面试题,期待评论。...浅拷贝 Object.assign 上篇文章介绍了其定义和使用,主要是将所有可枚举属性值从一个或多个源对象复制到目标对象,同时返回目标对象。...这里需要注意下,返回对象 c 就是 目标对象 a。 2、在第二步中,修改源对象 b 基本类型值(name)和引用类型值(book)。...并复制给新目标对象(hasOwnProperty返回非原型链上属性) 实现代码如下,这里为了验证方便,使用 assign2 代替 assign。...会检查给定属性名是否直接存在于对象中(不是在原型链上)并且满足 enumerable: true。

    1.1K20

    真疯了!Java 9 还没会用,Java 10 就要来了!

    像我在我文章中多次提到过观点:作为一个开发人员,最大挑战就是如何保证自己了解新技术。好在你现在关注了Hollis,我会和你一起学习这些新技术。...我们需要在赋值左侧提供显式类型,并在赋值右边提供实现类型,如下面的片段所示: MyObject value = new MyObject(); List list = new ArrayList()...; 在Java 10中,你可以这样定义对象: var value = new MyObject(); var list = new ArrayList(); 正如你所看到,本地变量类型推断将引入“var...”关键字,不需要显式规范变量类型。...构造函数参数 方法返回值类型 对象成员变量 只是定义定义不初始化 总结 在Java 10之后你在声明局部变量类型时候可以使用var来告知编译器进行类型推断。

    86570

    ExtJs学习笔记(22)-XTemplate + WCF 打造无刷新数据分页

    (改编自老张PageData),用于WCF向ExtJs返回分页数据 Code using System; using System.Collections.Generic; using System.Runtime.Serialization... _List = new List(); _List.Add(new T_GuestBook() { F_ID = 1, F_IP =...这里为什么要加Json返回格式,原因很简单,不指定Json格式,默认就是以xml返回,会无端在前后加上更多无用字符 5.ExtJs前端完整代码: Code <...,但是wcf服务在返回时,必须要有一种格式,要么xml,要么json,所以我们指定了wcf以json格式返回后,会对正常结果再做一次序列化,最后结果是使字符串前后都加上了双引号,同时把原来正常双引号做了转义处理...,除了wcf返回字符串,就没其它东西了,性能上会提高    b.相对而言,ExtJsAjax请求方式,我觉得比aspx.net ajax更容易操作.

    1.4K50

    《你不知道js(上卷)》笔记2(this和对象原型)

    return this.name.toUpperCase(); } var me = { name: "Kyle" }; identify.call( me ); // KYLE this并不像我们所想那样指向函数本身...创建(或者说构造)一个全新对象。 这个新对象会被执行[[原型]]连接。 这个新对象会绑定到函数调用this。 如果函数没有返回其他对象,那么new表达式中函数调用会自动返回这个新对象。...种类型为简单基本类型,本身并不是对象,但是typeof null会返回字符串 “object”。...propertyIsEnumerable(..)会检查给定属性名是否直接存在于对象中(不是在原型链 上)并且满足enumerable:true。...原型链上层时myObject.foo = "bar"会出现三种情况: 如果[[Prototype]]链上层存在名为foo普通数据访问属性并且不是只读,就会直接在 myObject 中添加一个名为 foo

    69610

    检测WCF服务是否在线(动态执行WCF服务)

    那么最简单办法自然是引用其他wcf服务让vs给我们自动生成clientProxy然后一个个去调用是否正常。但是这种办法显然不是我要。我要弄一个通用服务检测。   ...方案1:   对于httpbindingwcf服务有个最简单检测方法:就是用httpClient去请求一下服务地址看有没有服务描述xml返回。如果有就是live不然就是服务异常关闭了。...当然这个方法最好不是Update等会影响到业务数据方法,最好是query级别的方法。   ...正常使用ChannelFactory调用wcf服务: var channelFactory = new ChannelFactory(endpoint); var proxy = this....我们目的是判断wcf是否还live,所以不要在意返回值。我们只要判断这次调用异常是否是SocketException或者EndpointNotFindException即可。

    1.3K70

    为什么我应该使用指针不是对象本身

    我发现使用 C++ 的人经常用指针表示对象,比如像下面这样: Object *myObject = new Object; 不是, Object myObject; 或者在调用成员函数时候,都会这样...: myObject->testFunc(); 不是myObject.testFunc(); 我有点想不明白为什么这么做?...意思是说你想一直使用某个地址位置变量,不是副本,对于后者,我们更应该使用 Object myObject; 语法。 你需要很多内存。 大家都知道,栈空间比堆空间小多。...切片意思就是说:在函数传参处理多态变量时,如果一个派生类对象在向上转换(upcast),用是传值方式,不是指针和引用,那么,这个派生类对象在 upcast 以后,将会被 slice 成基类对象,...#include "B.h" // 必须 include 来包含类 B 定义 class A; // 只需 A 前向声明即可 func(A* a, B a) { } 兼容 C 库: C 库接口大多都是以指针返回对象

    1.4K10

    C++ 中文周刊 第137期

    实现,可以体验一下这个 https://godbolt.org/z/5hcaPcfvP • 论文阅读:Mimalloc Free List Sharding in Action[8] 介绍mimalloc...sort排序条件显然不能这么写,并没有一个有序传递性 拓扑排序没有排序传递性,所以被迫需要整体视角, 排序is sorted只要保证 左右和自己就能把这个传递性推广开 那只好遍历了 /// topological...]); ++s_last; } } } } 说不定将来std::graph能进标准库,这些内建支持 如果你像我一样不知道上面说是啥...{ MyObject() { m_widget.prime(); // Do this last: Don't register for callbacks...[14] 客户代码多线程裸奔,使用map来读写,崩溃次数还算少,就没怎么关注,某一天改成unordered_map 崩溃次数多了。只能加锁了 为什么

    7810

    DCL单例模式你不知道秘密

    当new一个对象时,每一次new都是创建一个新对象,单例模式就是无论怎么样去获取一个对象,永远都是拿到同一个对象。...不是,如果线程1去获取实例,判断为null,拿到锁此时线程2也进来了,由于线程1还没有创建实例,此时判断也是为null,所以会继续执行,此时线程1即使拿了锁在创建对象,但是线程2已经走过了判断,获取出来对象也不是单例...我们先了解一下volatile作用,volatile有两个作用 1.线程可见性,就是如果一个线程操作成员变量以后,计算机问题并不是马上线程2就知道此时值已经改变,他需要先告诉计算机内存,...myObject5: return最后返回回到正题,那么如果不加volatile的话,就会发生指令重排序。...,刚好此时线程2进来因为已经建立了关联只是半初始状态,所以对象是有引用,那么判断就不为null,然后直接去使用此单例,此时使用就是一个半初始状态单例所以会出现不可预估问题,这就是为什么DCL单例要加

    54931

    理论+实践:从原型链到继承模式,掌握 Object 精髓(二)

    类机制 • 在许多面向类语言中(比如 Java)中,"标准库"会提供 stack 类,它是一种栈结构,支持压入(push),弹出(pop)等。...• 一个类其实就是一张蓝图,只是一个计划,并不是真正可以交互对象,我们必须通过实例化来调用所有公有数据属性,而这个实例化对象就是类所有特性一份副本。...• 这个查找过程会持续找到匹配属性名或查找完整条 [[Prototype]] 链。如果找到完整 [[Prototype]] 链的话,[[Get]] 操作就会返回 undefined。...类 • JavaScript 与其他面向类语言不同,它并没有用类作为对象抽象模式或蓝图, JavaScript 只有对象。 • 在面向类语言中,类可以或实例化多次。...创建关联 • 那 [[Prototype]] 机制意义是什么?为什么要创建这些关联呢?

    7910

    Java多线程编程核心技术

    虽然在HasSelfPrivateNum.java中使用了synchronized关键字,但打印顺序却不是同步,是交叉为什么是这样结果呢?...关键字 synchronized 取得锁都是对象锁,不是把一段代码或方法(函数)当作锁,所以上面的示例中,哪个线程先执行带 synchronized 关键字方法,哪个线程就持有该方法所属对象锁Lock...关键字 volatile 提示线程每次从共享内存中读取变量,不是从私有内存中读取,这样就保证了同步数据可见性。...一生产与多消费:操作栈:解决 wait 条件改变与假死 本示例是使用一个生产者向堆栈List对象中放入数据,多个消费者从List堆栈中取出数据。List最大容量还是1。...(t1.get()); //从未放过值 //我值 //我值 } } 第一次调用t1对象get()方法时返回值是null,通过调用set(

    2K30
    领券