2

さまざまな列挙型または非列挙型 (通常のクラス インスタンス) のリストになるオブジェクトがあります。

オブジェクトがリストかどうかを確認するのは簡単です:

myobject is IList

これで、リストの要素のタイプを確認できます。

(myobject as IList)[0].GetType().IsEnum

しかし、まだ要素がない場合、リストの要素が列挙型であるかどうかを確認する方法は?

if (myobject is IList)
{ 
    if ((myobject as IList).Count > 0)
    {
        if ((myobject as IList)[0].GetType().IsEnum)
            return true;
    }
    else
    {
        // how to check if the list is enum list here ?
    }
}
4

5 に答える 5

0

誰もが提案している解決策:

IList<Days> list = new List<Days>();

if (list is IList<Days>)
{
    Console.WriteLine("list has days");
}
于 2012-09-27T08:50:02.820 に答える
0

リストが一般的なリストでない限り、非一般的なリストにはオブジェクトが含まれている可能性があるため、できません。

リストがジェネリックの場合、列挙型のジェネリック型パラメーターを調べます。

list がジェネリックでない場合はAdd、 、IndexOfまたはインデクサー メソッドのパラメーターを調べて、項目の種類を解決してみてください。それを行うのは非常に醜い方法ですが、多くの古い実装がListobject を継承してAddオーバーロードを追加するか、いくつかの新しい遅延実装が のような一般的なパラメーターを非表示にするために使用される可能性があるため、手がかりが得られる可能性がありますpublic class MyObjectList: List<MyObject> {}

于 2012-09-27T08:45:33.250 に答える