受信したオブジェクトをList <object>またはIEnumerable <object>にキャスト
private void MyMethod(object myObject)
{
if(myObject is IEnumerable)
{
List<object> collection = (List<object>)myObject;
... do something
}
else
{
... do something
}
}
しかし、私はいつも次の例外で終わります:
タイプ 'System.Collections.Generic.List 1[MySpecificType]' to type 'System.Collections.Generic.List
のオブジェクトをキャストできません。オブジェクト] '
このメソッドは、単一のオブジェクトとコレクションの両方を指定するために非常に汎用的である必要があるため、これは本当に必要です。
これは可能か、これを達成する別の方法です。
ありがとうございます。
ありがとうございます。これはそれでした。 –
@Sergioランタイムエラーの危険を避けるには、キャストする前にmyObjectがIEnumerableではなくIListを実装していることを確認する必要があります。組み込みのコレクションの多くはIEnumerableを実装していますが、IListでは実装していません(Dictionary <>、HashSet <>、Hashtable、Queue、Stackなど)。 – LukeH
@ルーク:それがリスト(質問に暗示されている)であれば、IListを実装します。 –
erikkallen