WCF和匿名类型

我想返回匿名类型在WCF。 这可能吗?

--------------解决方案-------------

你不能从任何方法返回一个匿名类型,可以吗? 所以,你为什么能够从WCF返回?

不能使用匿名类型,但也许你说的是WCF和非类型化的消息?

有在WCF中一个选项,以刚刚定义类型的参数Message (也可能是同一类型的返回值)。 这仅仅是原始的消息,去WCF(和来自回)。

我找不到太多好的信息在那里 - 有MSDN上的一些文件,但我到目前为止看到的最好的是库尔特CLAEYS“的博客文章WCF:在WCF操作无类型的消息。

我不建议使用这种方法 - 这是一个很多繁重的工作,直接处理邮件内容自己,这就是WCF正试图从饶了我们 - 但如果你绝对,积极必须调整你的信息的每一位 - 这似乎是要走的路。

你一定可以返回匿名类型。 这个工程,例如:

public object GetLatestPost()
{
XDocument feedXML = XDocument.Load("http://feeds.encosia.com/Encosia");

var posts = from feed in feedXML.Descendants("item")
select new
{
Title = feed.Element("title").Value,
Link = feed.Element("link").Value,
Description = feed.Element("description").Value
};

return posts.First();
}

如果调用该方法作为一个ASMX ScriptService的WebMethod的,你会得到这个JSON从中:

{"d":
{"Title":"Using an iPhone with the Visual Studio development server",
"Link":"http://feeds.encosia.com/~r/Encosia/~3/vQoxmC6lOYk/",
"Description":" Developing iPhone-optimized portions of an ASP.NET ..."}}

您可以使用的IEnumerable返回类型返回匿名类型的集合也。

看起来你无法与XML序列化,因为有关参数的构造函数的一些抱怨这样做,但它的工作原理为JSON序列化,如果你提供一个Ajax客户端由戴维·沃德表示。

好的,我明白了。 不过,如果我定义一个类型 - MyObj中 - 为了这个目的,并标记及其成员IsRequired =假的,我如何创建+送跨越MyObj中的一个实例,只有一些成员? 这可能吗??

看看[DataMember(EmitDefaultValue=false)]

不它不是。 你必须预先定义的类型。

您可以使用ExpandoObject。 当您在为ExpandoObject客户端作为字典生成的DTO定义属性:

合同DTO

public class TaskDTO
{
public string Type { get; set; }
public ExpandoObject Args { get; set; }
public string Id { get; set; }
public TaskDTO SuccessTask { get; set; }
public TaskDTO FailTask { get; set; }
public bool IsFinal { get; set; }
}

客户

using (var client = new JobServiceClient())
{
var task = new TaskDTO
{
Id = Guid.NewGuid().ToString(),
Type = "SendEmailTask",
IsFinal = true
};
dynamic args = new ExpandoObject();
args.To = "who@mail.com";
args.Title = "test job service";
args.Content = "test job service";
task.Args = ((IDictionary<string, object>)args).ToDictionary(i => i.Key, i => i.Value);
client.Execute(task);
}

服务

dynamic args = dto.Args;

分类:WCF 时间:2012-01-01 人气:0
本文关键词: WCF,匿名类型
分享到:

相关文章

  • 在WCF传递匿名类型的实例 2012-01-25

    我有一个期望对象的WCF服务方法,然后使用反射检索其属性. 在客户端创建一个匿名类型的对象 var obj = new {FirstName="John", LastName="Doe"} 并把它传递给方法. 我发现了一个异常: Type '<>f__AnonymousType0`2[System.String,System.String]' cannot be serialized. Consider marking it with the DataC

  • 与匿名类型WCF服务请求错误 2014-02-21

    WCF服务可以返回匿名类型的实例或做他们需要的是一个类? 我的服务返回JSON的网站消费. 这将是很好,从MVC采取一个页面,只是返回这样的事情,并有该服务会自动将其序列化到JSON. return new { user = data, lastUpdate = time, success = true }; --------------解决方案------------- 你永远不能从任何方法返回一个匿名类型的对象. 它不并有很多有用的发生. 问题不在于特定于WCF. 它只是在WCF变得更糟 ,

  • 如何返回层次匿名类型的LINQ加入? 2012-09-30

    我怎么能写一个LINQ查询返回的递阶匿名类型从加入? 为了澄清我的意思:随着WCF数据服务和WPF的Telerik RadTreeView可以很容易地查询和显示分层数据: Dim q = _ctx1.Execute(Of NorthwindDataService.Customers)(New Uri("Customers\?$expand=Orders", UriKind.Relative)) Dim td As New GridViewTableDefinition td.Relat

  • 创建泛型类的实例基于匿名类型 2012-01-30

    我有一类ReportingComponent<T>其构造函数: public ReportingComponent(IQueryable<T> query) {} 我对LINQ的Northwind数据库查询, var query = context.Order_Details.Select(a => new { a.OrderID, a.Product.ProductName, a.Order.OrderDate }); 查询的类型为IQueryable<a'>其

  • 匿名类型嵌套中继器(ASP .NET) 2012-02-03

    我有两个嵌套中继器在我的* .aspx页面中. <asp:Repeater runat="server" id="rptMain"> <ItemTemplate> <h1><%#DataBinder.Eval(Container.DataItem, "Name")%></h1> <asp:Repeater runat="server" DataSource='&

  • 如何从匿名类型的列表迭代? 2012-02-06

    我有这样的LINQ to Entities查询: c.CreateQuery<T_Hotels>("T_Hotels").Where(item => item.Id > 0).GroupBy(item => new { item.Location, item.Name }).Select(group => new { group.Key, Total = group.Sum(item => item.Id) }) 我想要实现一切的辅助类的方法,

  • 铸造ExpandoObject匿名类型 2012-02-11

    我可以投ExpandoObject匿名类型? var anoObj = new { name = "testName", email = "testEmail" }; dynamic expandoObj = new System.Dynamic.ExpandoObject(); // Here I'm populating the expandoObj with same property names/types in anonymoustype(anoObj)

  • 铸造匿名类型抛出铸造错误 2012-02-15

    在其中包含一个匿名类型的对象我创建了我Global.asax文件和数组列表 Application["userRecordsCountList"] = new ArrayList(); ((System.Collections.ArrayList)Application["userRecordsCountList"]).Add(new { userCount = 12, logTime = DateTime.Now }); 现在在我的CS文件我有一个转换函数,它是这

  • 如何在VB.NET中获得的匿名类型的属性 2012-03-08

    我试图找出如何得到一个匿名类型化对象的属性,当匿名类型没有在当前的函数创建. 具体来说,我绑定一个ASP.NET ListView控件中的LINQ结果集,然后尝试在处理ItemDataBound事件的每个项目. Option Explicit On Option Strict On Class MyPageClass Private Sub Bind() Dim items As ItemData = FetchItemData() Dim groups = From s In items Gr

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.287 (s). 10 q(s)