Controle d'accessibilité d'une méthode / propriété [Résolu]

Signaler
Messages postés
186
Date d'inscription
lundi 11 mars 2002
Statut
Membre
Dernière intervention
30 novembre 2010
-
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
Bonjour a tous !

Voila mon PB:

J'ai deux assembly :
Un pour l'accès aux données.
Un autre contenant les entités

La couche d'accès aux données communique via ces entités qui sont des objets composé uniquement de propriétés. Toutes les entités (Contact, Entreprise, Site....)héritent de la classe abstraite Entity. Cette classe abstratite Entity est composé par une prorpriété ID.

Je voudrais que la prorpriété ID de la classe Entity soit accessible :
- En lecture pour tout le monde donc Public
- En ecriture uniquement pas l'assembly d'accès aux données.

Mon problême est donc de ne permettre l'accès a cette propriété en ecriture pour un assembly ou un type (genre classe abstraite ou interface).

Après avoir retourné le web, je sèche complet .

Merci pour vos réponse

@+

Nico

5 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
ah ok...
dans ce cas... y a pas grand chose à faire malheureusement. Tu ne peux pas "filtrer" par le type de l'appelant.

Par contre, tu peux faire en sorte que ta classe d'acces aux données (abstract, interface... provider) soit dans la même assembly que ton entity... et dans ce cas, ton internal fonctionnera.
En tout cas, c'est à tester.

Séb

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
si tu es en .net 2.0, tu peux faire ceci :

private int id;
public int Id {
   get {return this.id;}
   internal set {this.id = value;}
}

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
186
Date d'inscription
lundi 11 mars 2002
Statut
Membre
Dernière intervention
30 novembre 2010
2
Merci pour ta réponse rapide (ca fait 5 minuite que j'ai posé la question :D )

En fait, internal ne rend accessible le membre que dans le meme assembly

Dans mon cas la propriété ID est dans l'assembly entité, les classes qui doivent pouvoir y écrire sont dans un autre assembly prédéfini

Une autre idée ?

Nico
Messages postés
186
Date d'inscription
lundi 11 mars 2002
Statut
Membre
Dernière intervention
30 novembre 2010
2
C'est bien ce que je craignais c'est un problême de conception.

Bon je vais revoir ça alors

Merci

Nico
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
Salut, fais une recherche sur l'attribut InternalsVisibleToAttribute .