2010-08-31 5 views
0

Je reçois une erreur de distribution non valide de 'System.String' à 'WebServiceWrapper.ItemMaster'. Ceci est mon code:Distribution non valide de 'System.String' à 'WebServiceWrapper.ItemMaster'

public class ItemMaster 
{ 
    public static ItemMaster loadFromReader(string oReader) 
    { 
     ItemMaster i = (ItemMaster)Convert.ChangeType(oReader, typeof(ItemMaster)); 
     return i; 
    } 
} 
+1

pouvez-vous republier votre exemple de code que ce qui n'a pas de sens. Je vous remercie. – ChrisBD

+1

Pourquoi pensez-vous qu'un ChangeType de String à ItemMaster fonctionnerait? –

+0

ici le type écrit est ItemMaster – Pradeep

Répondre

0

Vous ne pouvez lancer string-ItemMaster s'il y a un opérateur explicite mis en œuvre sur ItemMaster, qui fait le travail.

Voir l'exemple sur MSDN

Edit: implicite -> explicite, lien mis à jour.

+1

La distribution n'est requise que si un opérateur * explicite * est implémenté. Si l'opérateur était implicite, la distribution ne serait même pas nécessaire. –

+0

Bien sûr, vous avez raison :) Mauvaise lecture de la demande d'utilisation de la question. – JanW

0

quelques points ...

Vous parlez des lecteurs et des chaînes comme si elles sont interchangeables ... ils ne sont pas.

Vous lancez après avoir changé le type ... ceci est redondant.

Vous ne pouvez pas diffuser ItemMaster en string, sauf si ItemMaster a une distribution explicite définie. Voulez-vous simplement ItemMaster.ToString()?

+0

Je veux passer de la chaîne à ItemMaster, pas l'inverse – Pradeep

+0

À droite, je suis arrivé en arrière, mais il est toujours redondant ... vous appelez 'ChangeType' pour changer la chaîne en un' ItemMaster', puis en castant le résultat en tant que 'ItemMaster'. Et vous avez toujours besoin d'une distribution implicite pour la chaîne définie sur 'ItemMaster' –

+1

Je suis d'accord que le reste du code de Pradeep a des problèmes, mais la distribution explicite après avoir appelé ChangeType n'en fait pas partie. ChangeType renvoie ** objet **; pourquoi * n'auriez-vous pas besoin d'un casting explicite? –