Ne pouvez pas convertir un tableau de IEnumerable
Lorsque je tape cette ligne de code
(T)Convert.ChangeType(data.Split(new char[] { '¤' }), typeof(T));
J'obtiens une erreur de Objet de ne pas mettre en œuvre IConvertible. T
est un IEnumerable<String>
et data
est String
tapé. Ce qui peut être fait à ce sujet?
J'ai essayé de le convertir à un tas de choses différentes explicitement avant le changement de type, mais je ne peux pas le faire fonctionner. Je suis à la conversion d'autres choses à Dictionary
et les types natifs, mais celui-ci en particulier me donne des maux de tête.
Ne que la méthode doit être générique?
var d = données.Split(new char[] { ',' }) comme IEnumerable; //utilisation de ce peut-être?
pas si vous voulez explicitement type d comme un IEnumerable et pas un Tableau<string>
Remarque la méthode est générique, de sorte que vous ne pouvez pas choisir votre type de retour. Il devrait être
var d = données.Split(new char[] { ',' }) comme IEnumerable; //utilisation de ce peut-être?
as IEnumerable
est redondantpas si vous voulez explicitement type d comme un IEnumerable et pas un Tableau<string>
Remarque la méthode est générique, de sorte que vous ne pouvez pas choisir votre type de retour. Il devrait être
T
OriginalL'auteur Konrad Viltersten | 2013-11-19
Vous devez vous connecter pour publier un commentaire.
Pourquoi avez-vous besoin d'appeler
Convert.ChangeType()
?Dans le code suivant,
theEnumerable
est de typeIEnumerable<string>
.OriginalL'auteur Steve
Fundementally le type d'un objet ne peut pas être une Interface, seulement un type qui implémente un. Depuis le Tableau met en œuvre IEnumberable votre string[] est déjà ce que vous voulez qu'il soit.
La coulée est différent de celui de la Conversion.
Je sais. Comme je l'ai indiqué dans le code, je convertir des et cast. Juste casting n'a pas fonctionné en raison des différents types de données.
OriginalL'auteur Ashigore
OriginalL'auteur Konstantin
La sortie de
String.Split
déjà est unIEnumerable
, étant unstring[]
. La suite des deux compile amende:Fournir
T
est un paramètre de type générique, vous pouvez toujours le faire:Toutefois, vous devriez probablement plutôt d'introduire un
where T : IEnumerable<String>
contrainte d'avoir votre code vraiment sécurisé.Notez également que vous n'avez pas à instancier un tableau pour passer des arguments dans un
params string[]
argument.OriginalL'auteur Ondrej Tucny