2

Linq 構文が初めてで、エラーが発生する

「タイプ ' System.Collections.Generic.IEnumerable<System.Reflection.MethodInfo>' を ' System.Collections.Generic.IEnumerable<System.Reflection.MethodBase>' に暗黙的に変換できません。明示的な変換が存在します (キャストがありませんか?)」

私のアプリケーションの次の行に

 IEnumerable<MethodBase> methods = 
                    from p in defaultMembers.OfType<PropertyInfo>()
                    select p.GetGetMethod() into m
                    where m != null
                    select m;

何か案は?ありがとう

4

1 に答える 1

4

問題はIEnumerable<T>、.NET 3.5 では共変ではありません (.NET4+ にあります)。IEnumerable<ChildClass>そのため、 に割り当てることはできませんIEnumerable<ParentClass>

変数宣言を変更して、クエリ結果と完全に一致するようにします (var暗黙的に型指定された変数を使用するか、正しい型を指定します)。

 IEnumerable<MethodInfo> methods = 
                    from p in defaultMembers.OfType<PropertyInfo>()
                    select p.GetGetMethod() into m
                    where m != null
                    select m;

IEnumerable<MethodBase>または、クエリにキャストを追加する必要がある場合は、次のようにします。

 IEnumerable<MethodBase> methods = 
                    from p in defaultMembers.OfType<PropertyInfo>()
                    select p.GetGetMethod() into m
                    where m != null
                    select (MethodBase)m;
于 2013-09-21T21:38:16.063 に答える