2009-04-28 7 views
1

J'ai essayé de le chercher sur google mais n'a pas pu trouver la réponse alors je vais l'essayer ici. J'utilise Subonic et essaie de remplir un objet en utilisant:comment faire subonic convertir une chaîne à mon personnalisé Type

Model.Object o = new Select() 
      .From<Object>() 
      .Where("Id") 
      .IsEqualTo(id) 
      .ExecuteSingle<Model.Object>(); 

Lors de cette opération que je reçois l'erreur: objet de type « System.String » ne peut pas être convertie en type « CustomType » L'une des propriétés est stockée dans la base de données en tant que varchar. Dans l'objet Model.object, cette propriété est définie en tant que CustomType. J'ai déjà ajouté un opérateur implicite à ce type comme suit:

public static implicit operator CustomType(String value) 
    { 
     return new CustomType(value); 
    } 

Qu'est-ce que je fais de mal ici? ou ai-je oublié quelque chose? Essayez n'importe quelle aide

Répondre

0

Essayez d'implémenter votre propre TypeConverter afin qu'il soit possible de recréer votre Model.Object à partir de la représentation sous forme de chaîne.

EDIT. Après avoir creusé à travers le code SubSonic, j'ai découvert que cela n'aidera pas (voir this, BuildTypedResult<T>). Essayez d'implémenter IBaseRecord si vous le souhaitez et implémentez la méthode Load().

+0

J'ai essayé mais sans succès. les points d'arrêt de la classe du convertisseur ne sont pas touchés. Je suis désemparé –

+0

Ensuite, je serais mieux d'utiliser la classe générée de SubSonic. –

0

Si c'était mon projet, je construirais probablement une classe partielle pour Model.Object, puis j'y ajouterais une méthode factory ou peut-être une autre surcharge de constructeur qui prend un Reader. Vous pouvez ensuite utiliser ce lecteur pour charger les propriétés si nécessaire, en créant votre CustomType.

Questions connexes