IEnumerable不包含“长度”的定义

时间:2018-11-06 11:14:37

标签: c#

 error CS1061: 'IEnumerable<Attribute>' does not contain a definition for 'Length' and no extension method 'Length' accepting a first argument of type 'IEnumerable<Attribute>' could be found (are you missing a using directive or an assembly reference?)

当我尝试使用.Net而不是IL2CPP进行编译时,使用Unity 2018出现此错误 这是我收到错误的行:

 if (methods[i].GetCustomAttributes(typeof(CompilerGeneratedAttribute), true).Length != 0)
            {
                continue;
            }

然后,通过另一种方法:

  var ret = (Delegate.CreateDelegate(typeof(V), target, method) as V);

此外,在此方法中,我使用methodinfo代替Delegate。但是请问是否没有使用3个值的方法。

还添加了“ using system.Linq”

最诚挚的问候

2 个答案:

答案 0 :(得分:3)

实际上,您要测试IEnumerable<T>中是否有任何个项目:

 if (methods[i].GetCustomAttributes(typeof(CompilerGeneratedAttribute), true).Any())
 {
     continue;
 }

如果您坚持使用Length != 0方法,则正确的语法是

 if (methods[i].GetCustomAttributes(typeof(CompilerGeneratedAttribute), true).Count() > 0)
 {
     continue;
 }

答案 1 :(得分:-1)

好吧,现在可以正常工作

 if (methods[i].GetCustomAttributes(typeof(CompilerGeneratedAttribute), true).Count() > 0)

现在,另一个错误:

var ret = (Delegate.CreateDelegate(typeof(V), target, method) as V);

我尝试使用MethodInfo,但是没有用。 'Delegate'不包含'CreateDelegate'的定义