动态/匿名类型,返回匿名类型!

时间:2010-08-02 09:36:48

标签: dynamic parameters types return anonymous

这不是一个问题,因为我认为它的讨论,我知道你不能跨方法返回一个匿名类型,当我第一次使用匿名类型时,我认为能够跨方法返回它并且当.net时非常好4出来了,动态类型的版本,我认为可能有希望通过动态类型返回匿名类型,如下所示:

      public static dynamic  getCustomer()
    {
        .....
        var x = from c in customers
                select new {Fname = c.FirstName};

        return x;
    }

然后

static void Main(string[] args)
    {
        dynamic x = getCustomer();
        Console.WriteLine(x.First().Fname);
        Console.ReadKey();
    }

但遗憾的是,虽然编译良好,但它不起作用,

我想原因是:

编译类型中已知的匿名类型,必须包装到KNOWN IN RUNTIME中的类!,现在匿名类型在编译时携带信息,希望某些类会将此信息带到运行时,但动态类型未知编译时间所以通过动态类型传递匿名类型强制匿名类型丢失其信息/ intellisence,我试图调试,我可以得到我想要的数据,但我想它只能在调试模式下工作,或者我可能会遗漏一些东西。

我想知道是否有人让它工作或想过它?

1 个答案:

答案 0 :(得分:2)

可以返回一个匿名类型,你只是不能声明你会这样做。您可以使用horrible hack进行回合。

您的代码不起作用的原因与匿名类型无关 - 它与在动态类型中找不到的扩展方法有关。

更改为:

Console.WriteLine(Enumerable.First(x).Fname);

我希望它能奏效。