J'ai besoin des éclaircissements sur exactement ce que vous entendez par « classes spécifiques » ... mais je suis en espérant que j'interprète correctement ce que vous voulez que les instances de la classe A à être capable d'appeler la méthode.
public class A
{
private int number;
private void setNumber(int Number)
{
number = Number;
}
}
Dans ce cas, toutes les instances de la classe A peut appeler la méthode:
A myAinstance = new A();
myAinstance.setNumber(5);
Cependant, vous ne seriez pas en mesure de se référer à A.setNumber() comme si elle était statique méthode - sans relation avec une instance.
Si vous souhaitez que les classes dérivées (de toute assemblée) pour pouvoir l'appeler:
public class A
{
private int number;
protected void setNumber(int Number)
{
number = Number;
}
}
public class B : A
{
}
Dans ce cas, les instances de la classe B ou A pourrait appeler setNumber(), mais pas d'autres classes pourraient voir ou y accéder.
Si vous ne souhaitez que toutes les instances des classes dans le même ensemble pour pouvoir l'appeler:
public class A
{
private int number;
internal void setNumber(int Number)
{
number = Number;
}
}
Dans ce cas, toutes les classes dans le même ensemble que votre classe « A » sera en mesure d'appeler setNumber() comme s'il s'agissait d'une propriété publique, mais aucune classe contenue dans d'autres assemblées ne pourra la voir ou la référencer. En VB.NET interne est le même que «ami».
Si vous ne souhaitez classes dérivées dans le même ensemble pour pouvoir l'appeler:
public class A
{
private int number;
protected internal void setNumber(int Number)
{
number = Number;
}
}
public class B : A
{
}
Dans ce cas, les instances de la classe B ou A quel que soit l'assemblage peut voir et setNumber de référence () et toutes les classes dans le même assemblage que la classe A pourront le voir ou le référencer comme s'il était public.
Je pense que cela couvre chacune des options ...
Quelle est la raison profonde pour laquelle vous voulez garder cette méthode? Sécurité, droits d'utilisateur, autre chose? – mdma
Pouvez-vous clarifier la situation dans laquelle il serait permis de l'appeler? c'est-à-dire lorsque vous dites «classe spécifique», cette classe dériverait-elle de la classe A, serait-elle dans le même assemblage que la classe A ou serait-ce seulement des instances de la classe A? – BenAlabaster
Vous pourriez jeter un oeil à cette question qui demande fondamentalement la même chose: http://stackoverflow.com/questions/1609472/friend-class-with-limited-access – n1ckp