如何修复“无法将类型对象隐式转换为System.Attribute”?

时间:2019-05-13 11:25:08

标签: c# .net uwp

我是一名编程新手,我有一个有效的代码,我在nuget上更新了.NET软件包(我正在使用UWP),然后,这部分代码停止了工作。

[...]
 if (eh != null)
            {
                Delegate d = (Delegate)(object)eh;


/// This one >
 IEnumerable<Attribute> attributes = d.GetMethodInfo().DeclaringType.GetTypeInfo().GetCustomAttributes(typeof(CompilerGeneratedAttribute), false);

///
                int count = 0;
                using (IEnumerator<Attribute> enumerator = attributes.GetEnumerator())
[...]

我收到此错误:

  

CS0266无法将类型'object []'隐式转换为'System.Collections.Generic.IEnumerable'。存在显式转换(您是否缺少演员表?)

1 个答案:

答案 0 :(得分:1)

简而言之,您正在尝试将对象数组object[]推入IEnumerable<Attribute>中,这不会发生。

只需使用Enumerable.Cast

  

将IEnumerable的元素转换为指定的类型。

 var attributes = d...
                   .GetCustomAttributes(typeof(CompilerGeneratedAttribute), false)
                   .Cast<Attribute>()