Bonjour , je voudrais savoir comment faire pour rendre les méthodes d'une
interface inaccessibles de l'extérieur. En C++ il est possible lorsqu'on
dérive de spécifier une visibilité. En C# cela est impossible, normal
puisque l'on peut dériver d'une seule classe et que l'on doit toujours avoir
accès à la classe Object de base. Cependant lorsque l'on souhaite
implémenter une interface je ne comprend pas pourquoi on ne peut pas
implémenter les méthodes avec une visibilité réduite !
public class MyClass : MyInterface { public MyClass() { }
void MyInterface.DoSomething() { } }
-----------------------------------------------
Cela résoud entierement mon probleme !!!!
La méthode DoSomething() implémentée de cette manière n'est pas accessible directement à partir de MyClass.
alors, histoire de, je recopie la question de départ, qui etait
"Bonjour , je voudrais savoir comment faire pour rendre les méthodes d'une interface inaccessibles de l'extérieur".
tout le monde aura bien constaté que n'importe qui disposant d'un objet MyClass myClass = new MyClass() ; est dans l'impossibilité d'appliquer dessus DoSomething() ;
pffffff....
Et comme l'interface est déclarée en internal, il n'y a ainsi aucune visibilité sur DoSomething() à l'exterieur de l'assembly, même si MyClass est public !
ça d'accord. internal à cet aspect interessant.
> (Viens du post de Robert Jordan sur le forum US)
public class MyClass : MyInterface {
public MyClass() {
}
void MyInterface.DoSomething() {
}
}
-----------------------------------------------
Cela résoud entierement mon probleme !!!!
La méthode DoSomething() implémentée de cette manière n'est pas accessible
directement à partir de MyClass.
alors, histoire de, je recopie la question de départ, qui etait
"Bonjour , je voudrais savoir comment faire pour rendre les méthodes d'une
interface inaccessibles de l'extérieur".
tout le monde aura bien constaté que n'importe qui disposant d'un objet
MyClass myClass = new MyClass() ; est dans l'impossibilité d'appliquer
dessus DoSomething() ;
pffffff....
Et comme l'interface est déclarée en internal, il n'y a ainsi aucune
visibilité sur DoSomething() à l'exterieur de l'assembly, même si MyClass
est public !
public class MyClass : MyInterface { public MyClass() { }
void MyInterface.DoSomething() { } }
-----------------------------------------------
Cela résoud entierement mon probleme !!!!
La méthode DoSomething() implémentée de cette manière n'est pas accessible directement à partir de MyClass.
alors, histoire de, je recopie la question de départ, qui etait
"Bonjour , je voudrais savoir comment faire pour rendre les méthodes d'une interface inaccessibles de l'extérieur".
tout le monde aura bien constaté que n'importe qui disposant d'un objet MyClass myClass = new MyClass() ; est dans l'impossibilité d'appliquer dessus DoSomething() ;
pffffff....
Et comme l'interface est déclarée en internal, il n'y a ainsi aucune visibilité sur DoSomething() à l'exterieur de l'assembly, même si MyClass est public !
ça d'accord. internal à cet aspect interessant.
Laurent Vigne
> tout le monde aura bien constaté que n'importe qui disposant d'un objet MyClass myClass = new MyClass() ; est dans l'impossibilité d'appliquer dessus DoSomething() ;
pffffff....
Et bien c'est exactement ce que je demandais ! Je comprend pas le " pffffff "
Pour avoir acces à DoSomething() il faut obligatoirement connaitre l'interface et comme celle-ci est déclarée internal, seuls les éléments de l'assembly peuvent y avoir acces !
> tout le monde aura bien constaté que n'importe qui disposant d'un objet
MyClass myClass = new MyClass() ; est dans l'impossibilité d'appliquer
dessus DoSomething() ;
pffffff....
Et bien c'est exactement ce que je demandais ! Je comprend pas le " pffffff
"
Pour avoir acces à DoSomething() il faut obligatoirement connaitre
l'interface et comme celle-ci est déclarée internal, seuls les éléments de
l'assembly peuvent y avoir acces !
> tout le monde aura bien constaté que n'importe qui disposant d'un objet MyClass myClass = new MyClass() ; est dans l'impossibilité d'appliquer dessus DoSomething() ;
pffffff....
Et bien c'est exactement ce que je demandais ! Je comprend pas le " pffffff "
Pour avoir acces à DoSomething() il faut obligatoirement connaitre l'interface et comme celle-ci est déclarée internal, seuls les éléments de l'assembly peuvent y avoir acces !