limite la méthode à appeler uniquement par une classe particulière

Je veux une méthode particulière dans une classe à seulement accessible par une classe particulière. Par exemple:

public class A
{
  public void LimitedAccess() {}
  public void FullAccess() {}
}

public class B
{
  public void Func()
  {
     A a = new A();
     a.LimitedAccess();       //want to be able to call this only from class B
  }
} 

public class C
{
  public void Func()
  {
     A a = new A();
     a.FullAccess();           //want to be able to call this method
     a.LimitedAccess();        //but want this to fail compile
  }
} 

Est qu'il ya un mot-clé ou l'attribut que je peux utiliser pour faire appliquer le présent?

Mise à JOUR:

En raison de la complexité du système et des contraintes de temps, j'avais besoin d'un faible impact de la solution. Et je voulais quelque chose pour indiquer au moment de la compilation que LimitedAccess() ne peut pas être utilisé. J'ai confiance Jon Skeet la réponse c'est exactement ce que j'avais demandé n'a pas pu être fait en C#.

La question et de Jon réponses sont bonnes pour ceux qui à travers cela plus tard. Et le fait que cette conception des odeurs peut espérer veer personne pour le choix de quelque chose comme ce que souhaité une solution.

Comme mentionné dans un commentaire, le C# ami conversation est utile de lire si vous essayez de résoudre une situation similaire.

Que pour ma solution particulière: "pourquoi A contient B de la logique" (demandé par @sysexpand dans les commentaires). C'est le hic. B.Func() a été appelé dans l'ensemble du système sur lequel je travaille, mais elle est principalement exploité sur un singleton de A. Donc, ce que j'ai fait a été de passer B's Func() en A et de faire A.LimitedAccess() privé. Il y avait quelques autres détails à contourner, comme il en a toujours, mais j'ai un faible impact de la solution qui m'a donné des erreurs de compilation sur les appelants à A.LimitedAccess().

Merci pour la discussion.

source d'informationauteur jltrem