しかし、input.getType()。GetGenericArguments()[0]はそれがオブジェクトタイプであると言っています...
まあ、List<T>
不変であるように、渡されたリストのジェネリック引数は常にメソッドパラメータのジェネリック引数と正確に一致します。
この場合、リストは常にsのリストになりobject
ます。
現在、リスト内の各項目はobject
(最も派生した型であるため)ではなく、文字列またはである可能性がありますPSObject
。ただし、それらすべてが。以外のタイプであると想定することはできませんobject
。
したがって、リスト内の特定のアイテムに対してより派生したタイプがあるかどうかを確認できますが、リスト全体ではないかどうかを確認できます。
したがって、次のようにコードをリファクタリングする必要がある可能性が高くなります。
Boolean actions(List<Object> input)
{
foreach(object element in input)
{
if (element is String)
{...}
else if (element is PSObject)
{...}
}
}
すべてのアイテムが同じタイプであることが重要な場合は、ジェネリックを使用できます。
Boolean actions<T>(List<T> input)
{
if (typeof(T) == typeof(string))
{...}
if(typeof(T) == typeof(PSObject))
{...}
}