Question

Tout d'abord, je veux présenter mes excuses pour mon anglais, pas mon côté le plus fort.

A la question. Dans mon projet actuel, j'ai interfaces à mes entités je peux utiliser des attributs subsoniques à ma tête ENTITES et je veux être en mesure de passer de façon transparente O / R cartographe à l'avenir. Quoi qu'il en soit, je reçois une erreur lorsque je tente d'utiliser mes interfaces et classes SimpleRepositorys comme unique <>, Tous <> et ainsi de suite. Je sais pourquoi je reçois le message d'erreur, mais je besoin d'aide pour trouver un moyen de la contourner. Message d'erreur:

  

System.InvalidCastException. Impossible de coulée objet de type 'SubSonic.DomainObjects.User' taper 'Core.DomainObjects.IUser'

Code de:
public IUser FindById(int id) {
var user = _repository.Single<User>(x => x.Id == id);
return (IUser)user;
}

Comme vous pouvez le voir, je l'ai essayé de rendre l'utilisateur à l'ordre IUser travailler quand je veux ajouter des données, mais sans succès. Que puis-je faire pour faire ce travail?

Merci,
Timmie

Était-ce utile?

La solution

Je ne pense pas subsonique est le problème dans cette situation. Ce code fonctionnera:

namespace Core.Objects
{
    public interface ICustomer
    {
        int CustomerID { get; set; }
        string Name { get; set; }
    }

}

Code de la classe réelle:

namespace Business.Entities
{
        public class Customer: Core.Objects.ICustomer
        {
            public int CustomerID { get; set; }

            [SubSonicStringLength(50)]
            public string Name { get; set; }
        }
}

Et enfin, la fonction pour obtenir le client:

private static ICustomer CustomerByID(int id)
{
      var repos = new SimpleRepository("Test", SimpleRepositoryOptions.None);
      var customer = repos.Single<Customer>(c => c.CustomerID == id);

      return (ICustomer) customer;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top