私は私の式はnull
返しSystem.Collections.Generic.IEnumerable'1[MyClass]
タイプSystem.Collections.Generic.IEnumerable'1は[MyClassの]私のラムダ式で
に問題を持っているが、それはいけない:
myCustomList.Where(x => x.bType != null && x.bType is IEnumerable<T>).FirstOrDefault();
私AddWatchは私を示しています
T
について:System.Collections.Generic.List<MyClass>
x.bType
について:Type
x.bType is IEnumerable<T>
戻りfalse
として{System.Collections.Generic.IEnumerable'1[MyClass]}
とdynamic {System.RuntimeType}
。x.bType != null
は、true
を返します。
x.bType
はプロパティであり、値は通常typeof(IEnumerable<MyClass>))
です。
を更新し
私は...x.bType == typeof(IEnumerable<T>)..
に自分の表現を変えました。
x.bType
は赤色で表示されます{System.Collections.Generic.IEnumerable'1[MyClass]}
List<MyClass>
をIEnumerable<MyClass>
に変換できないようです。 、私が見るのでx.bType.DeclaringMethod
ためSystem.InvalidOperationException
、x.bType.GenericParameterAttributes
とx.bType.GenericParameterPosition
(私はx.bType
を開くと)私は間違って何をしたのですか?
SOLUTION:x.bType.IsAssignableFrom(typeof(T))
、しかしrelfectionは、私の場合にはそのパフォーマンスではありませんので、多分解決策は、反射せずにそこにある:すべて、特に@Wilkoのファンデヴェーンに
おかげで、これは私の問題を解決しましたか? !
少なくともショー。 bTypeの設定方法 –
注: 'System.Collections.Generic.IEnumerable'1 [MyClass]'は文字列で、 'IEnumerable'型で呼び出された 'ToString()'メソッドの結果です(デバッガはそれを呼び出して変数に関する情報を表示します)。実際のものは 'System.Collections.Generic.IEnumerable ' –
ASh
@Henk Holterman 'bType = typeof(IEnumerable)'です。助けてくれてありがとう –
kkkk00999