Мне нужно уточнить, что именно вы подразумеваете под «определенными классами» ... но я надеюсь, что я правильно интерпретирую, что вы хотите, чтобы только экземпляры класса A могли вызывать метод.
public class A
{
private int number;
private void setNumber(int Number)
{
number = Number;
}
}
В этом случае любые экземпляры класса A могут вызывать метод:
A myAinstance = new A();
myAinstance.setNumber(5);
Однако вы не сможете ссылаться на A.setNumber (), как если бы это был статический метод - без связи с экземпляром.
Если вы хотите, чтобы только производные классы (из любой сборки) могли вызывать его:
public class A
{
private int number;
protected void setNumber(int Number)
{
number = Number;
}
}
public class B : A
{
}
В этом случае любые экземпляры класса B или A могут вызывать setNumber (), но другие классы не могут видеть или получать к нему доступ.
Если вы хотите, чтобы все классы экземпляров в одной сборке могли вызывать его:
public class A
{
private int number;
internal void setNumber(int Number)
{
number = Number;
}
}
В этом случае любые классы в той же сборке, что и ваш класс 'A', смогут вызывать setNumber (), как если бы это было открытое свойство, но никакие классы, содержащиеся в других сборках, не смогут видеть его или ссылаться на него. Это. В VB.NET внутренний такой же, как «Друг».
Если вы хотите, чтобы производные классы в одной сборке могли вызывать его:
public class A
{
private int number;
protected internal void setNumber(int Number)
{
number = Number;
}
}
public class B : A
{
}
В этом случае любые экземпляры класса B или A независимо от сборки могут видеть и ссылаться на setNumber (); и любые классы в той же сборке, что и класс А., смогут видеть его или ссылаться на него, как если бы он был общедоступным.
Я думаю, что охватывает каждый из вариантов ...