Une interface pourrait être privé intérieur d'une autre classe
public class MyClass
{
private interface IFoo
{
int MyProp { get; }
}
private class Foo : IFoo
{
public int MyProp { get; set; }
}
public static void Main(string[] args)
{
IFoo foo = new Foo();
return foo.MyProp;
}
}
en fonction de l'utilité qu'il cache simplement à partir d'un autre code, même au sein de la même assemblée, qui dit interface existe. L'utilité de ce n'est pas très élevé à mon avis.
Interface explicite la mise en œuvre en est une autre, très utile en cas (surtout lorsque l'on travaille avec les génériques et plus non des interfaces génériques), mais je ne voudrais pas le terme " privé interfaces et de ne dirais pas que le terme est couramment utilisé de cette manière.
En utilisant les deux techniques que vous pouvez faire:
public class MyClass
{
private interface IFoo
{
int MyProp { get; }
}
public class Foo : IFoo
{
int IFoo.MyProp { get; set; }
}
public static void Main(string[] args)
{
IFoo foo = new Foo();
return foo.MyProp;
}
}
public class HiddenFromMe
{
public static void Main(string[] args)
{
MyClass.Foo foo = new MyClass.Foo();
return foo.MyProp; // fails to compile
}
}
Cela vous permet de vous exposer les classes imbriquées, d'une certaine manière, tout en permettant à la classe parent d'invoquer des méthodes sur eux que le monde extérieur ne peut pas. C'est potentiellement un cas utile mais n'est pas quelque chose que je souhaite utiliser très souvent. Certainement, il s'agit de les utiliser dans une interview sent d'être un cas limite de l'interviewer à l'aide parce qu'ils ont vu et si c'était "intéressants"