No, you are right. As shown here, [IO.File]::ReadAllLines does return a String[] object. The confusing error that you are seeing is explained in @mjolinor's answer (I won't repeat it here).
Instead, I will tell you how to fix the problem. To convert a String[] object into a List<String> object in PowerShell, you need to explicitly cast it to such:
PS > [string[]]$array = "A","B","C"
PS > $array.Gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String[] System.Array
PS >
PS > [Collections.Generic.List[String]]$lst = $array
PS > $lst.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True List`1 System.Object
PS >
In your specific case, the code would be:
$csvUserInfo = [IO.File]::ReadAllLines($script:EmailListCsvFile)
[Collections.Generic.List[String]]$x = $csvUserInfo
Get-Member -Input $variableNameand not$variableName | Get-Member. The latter will automatically unroll the collection and you will get member info on the items contained in the collection.