t3r*_*rse 14 c# wcf struct value-type
有没有关于使用结构作为WCF服务的返回类型的官方建议?
我目前正在与一项我没有写过的服务进行互动,并发现自己受到启发,要求查看我的烦恼是否合理.
我过去总是使用类 - 可能部分是因为这是样本总是显示的,但正如我现在想的那样,出于其他"直观"的原因:
我通过定义一个单独的项目来开始合同样式,该项目的接口表示服务来回传递的类型.
我使用LINQ很多,因此对于可空性的测试是隐含的引用类型,而对于结构和其他值类型,我总是需要标记为可空.
虽然我承认它比我脑子里的项目符号列表更直观,但有些东西会马上来找我.我想问这个问题,因为我正在处理一个返回结构的服务,并且在处理返回值时必须写:
var foo = Bar.Value.MyField;
Run Code Online (Sandbox Code Playgroud)
代替
var foo = Bar.Value;
Run Code Online (Sandbox Code Playgroud)
mar*_*c_s 19
如果你可以创建一个结构并[DataContract]在其上放置一个属性 - 继续使用它!对于WCF,这没有什么区别--WCF只要求使用标记有DataContract属性的类或结构,并且要包含在序列化消息中的所有字段都要用[DataMember]属性标记.
如果您检查DataContractAttribute上的MSDN文档,它表明您也可以在结构上使用它:
[AttributeUsageAttribute(AttributeTargets.Class|
AttributeTargets.Struct|AttributeTargets.Enum,
Inherited = false, AllowMultiple = false)]
public sealed class DataContractAttribute : Attribute
Run Code Online (Sandbox Code Playgroud)
更新:至于何时使用结构而不是类(通常在.NET中),请在此处查看此SO问题:
但是,由于WCF实际上是关于消息传递(即您的客户端进行方法调用,该调用及其参数将转换为序列化消息,该消息通过线路发送,然后在另一端重新组装并转回方法电话),我没有看到任何令人信服的理由使用过struct.
一般.NET的所有好处并不真正适用于WCF的SOA世界,我会说(你不是在传递类或结构实例 - 见上文).
| 归档时间: |
|
| 查看次数: |
8258 次 |
| 最近记录: |