J'ai une classe qui utilise un IPlacez comme type de collection comme ci-dessous:NHibernate: utilisation de IEnumerable que les résultats de type collection en erreur
public class Client
{
private ISet<Contact> _contacts = new HashedSet<Contact>();
public virtual ISet<Contact> Contacts { get { return _contacts; } }
}
Je ne veux pas que la collection elle-même pour pouvoir être modifié extérieurement. Cependant, si je change le type de la propriété à IEnumerable comme ci-dessous:
public class Client
{
private ISet<Contact> _contacts = new HashedSet<Contact>();
public virtual IEnumerable<Contact> Contacts { get { return _contacts; } }
}
Alors chaque fois que j'essaie d'utiliser cette classe je reçois l'erreur NHibernate:
System.InvalidCastException: Impossible de jeter l'objet de type « NHibernate .Collection.Generic.PersistentGenericBag 1[Kctc.BusinessLayer.ProbateAssist.Entities.Contact]' to type 'Iesi.Collections.Generic.ISet
1 [Kctc.BusinessLayer.ProbateAssist.Entities.Contact] '.
Ce qui donne? Comment puis-je lire la version publique de la collection uniquement?
NB J'ai également essayé d'utiliser ReadOnlyCollection, et d'obtenir la même erreur.
Vous devriez montrer à quoi ressemblent vos fichiers de configuration nhibernate (ou quelle est votre configuration courante si vous utilisez FluentNhibernate) – samy