リストがあります<コンポーネント>コレクション(コンポーネントはカスタムクラスです)XTYPEから継承する単一の要素です。X.Single((c)=> cは[型])が機能しない
しかし、これは動作しません何らかの理由:
X = (XTYPE)Components.Single((c) => c is XTYPE);
私はメッセージでInvalidOperationExceptionが取得「順序が一致する要素が含まれていません」 しかし、私はその行にブレークポイントに入れ、これにそれを行う場合戻りtrue
:私はこれを行う場合
Components[0] is XTYPE
は、さらにそれがtrue
を返します。
Components[0].GetType().BaseType.BaseType == typeof(XTYPE)
ヘルプ。 OK
は、私は偽
foreach (Component c in Components) Console.WriteLine(c.GetType().BaseType.BaseType == typeof(Bridge)); if (Components.Count == 0) throw new Exception("No components"); if (!(Components[0].GetType().BaseType.BaseType == typeof(Bridge))) throw new Exception("Not bridge.");
がコンソールに書き込まれます...私のコードにいくつかのチェックを追加しましたが、タイプ名は同じです。 これはおそらくDLLの地獄です。そして今、質問に答えるための情報の差集合が必要です。 私はあなたが私の解決策に向かう手助けをしてくれたと思います。
さらに説明:問題のコンポーネントがそれにXTYPEを有するDLLの別のインスタンスからの反射を介してインスタンス化されました。だから今は2つのXTYPEがありますが、彼らはdiff型のハンドルを持っているので、技術的には同じ型ではありません。
デバッガが正しいコンテキストでチェックしていないため、タイプが同じであると考えました。しかしそれは間違っていた。
キャップロックキーが壊れているため動作しません。 – CodesInChaos
「働いていない」の* kind *とは何ですか? – AakashM
本当に面白い仲間。 –