C# LINQ Concat铸造问题?

C# LINQ Concat铸造问题?,c#,linq,casting,mono,concat,C#,Linq,Casting,Mono,Concat,在其简单的形式中,我(在控制台应用程序中): 然后在别的地方: var fields = GetFields() .Concat<MemberInfo>(GetProperties()) .Concat<MemberInfo>(GetMethods().Where(m => !m.IsSpecialName)) .Concat<MemberInfo>(GetExtensions()); 如果我取消注释,它会再次开始抱怨(给出相同

在其简单的形式中,我(在控制台应用程序中):

然后在别的地方:

var fields = GetFields()
    .Concat<MemberInfo>(GetProperties())
    .Concat<MemberInfo>(GetMethods().Where(m => !m.IsSpecialName))
    .Concat<MemberInfo>(GetExtensions());
如果我取消注释,它会再次开始抱怨(给出相同的错误)

知道发生了什么事吗

编辑: 这似乎真的是一个单一的东西。我将相同的示例代码从控制台应用程序复制粘贴到实际环境中(首先发布的代码),得到了相同的错误

编辑: 有关运行时的一些详细信息:

MonoDevelop-Unity
Version 4.0.1
Installation UUID: dc9fa750-d2af-42c8-9831-b510b08f6d28
Runtime:
    Microsoft .NET 4.0.30319.18408
    GTK 2.24.13
    GTK# (2.12.0.0)

这似乎是在编译,但不知道为什么:/

var fields = GetFields()
    .Concat(GetProperties().Cast<MemberInfo>())
    .Concat(GetMethods().Cast<MemberInfo>())
    .Concat(GetExtensions());
var fields=GetFields()
.Concat(GetProperties().Cast())
.Concat(GetMethods().Cast())
.Concat(GetExtensions());

如果有人能解释的话,我会很高兴。

您使用的是哪种版本的Mono?协方差是在C#4中添加的,因此如果您使用的Mono版本是C#4之前的版本,它将不起作用,因为没有协方差,
IEnumerable
无法分配给
IEnumerable
。我在Unity3D中工作,在最近的Unity4.x中,他们使用了Mono 2.6.5,我认为C#4在那里,我的意思是我可以使用命名参数,这不算四分之一吗?划掉它,把细节添加到我的问题中。
Error 'System.Collections.Generic.IEnumerable<System.Reflection.MemberInfo>' does not contain a definition for 'Concat' and the best extension method overload 'System.Linq.Enumerable.Concat<TSource>(System.Collections.Generic.IEnumerable<TSource>, System.Collections.Generic.IEnumerable<TSource>)' has some invalid arguments
Error Argument 2: cannot convert from 'System.Collections.Generic.IEnumerable<System.Reflection.MethodInfo>' to 'System.Collections.Generic.IEnumerable<System.Reflection.MemberInfo>'
fields = target.GetFields(returnType, flags)
    .Concat<MemberInfo>(target.GetProperties(returnType, flags))
    .Concat<MemberInfo>(target.GetMethods(returnType, Type.EmptyTypes, flags, false)
                                          .Where(m => !m.IsSpecialName).ToArray())
    //.Concat<MemberInfo>(extensionMethods)
    .Select(m => m.Name)
    .ToArray();
MonoDevelop-Unity
Version 4.0.1
Installation UUID: dc9fa750-d2af-42c8-9831-b510b08f6d28
Runtime:
    Microsoft .NET 4.0.30319.18408
    GTK 2.24.13
    GTK# (2.12.0.0)
var fields = GetFields()
    .Concat(GetProperties().Cast<MemberInfo>())
    .Concat(GetMethods().Cast<MemberInfo>())
    .Concat(GetExtensions());