我安装了VS .NET 2010,以及面向.NET 3.5的类库。下面的简单C#片段在.NET 4.0的peverify下生成可验证的IL,但IL不验证使用.NET 3.5的peverify。
在此转换中是否修复了任何peverify错误?
public static bool IsGenericTypeInstance(this Type typ)
{
return typ.IsGenericType && !typ.IsGenericTypeDefinition;
}
public static IEnumerable<Type> GetAllGenericArguments(this Type type)
{
return type.IsGenericTypeInstance()
? type.GetGenericArguments()
.SelectMany(x => x.IsGenericTypeInstance()
? GetAllGenericArguments(x)
: new[] { x })
: Enumerable.Empty<Type>();
}
产生的错误是:
Error 26 [Sasa.dll : Sasa.Types::<GetAllGenericArguments>b__0]
[offset 0x0000001C][found ref 'System.Collections.IEnumerable']
[expected ref 'System.Collections.Generic.IEnumerable`1[System.Type]']
Unexpected type on the stack.
我显然有点担心,因为我明确地针对.NET 3.5,我不希望在这个平台上运行时验证错误。