Comment puis-je mettre en œuvre les membres des interfaces internes

J'ai été refactoring de la base de code du projet que je suis actuellement sur, de sorte que les classes/interfaces qui ne sont pas utiles au-delà de l'enceinte de l'assemblée doit être déclarée en tant qu'interne (plutôt que dans le public). Mais j'ai couru dans un problème avec le code suivant:

internal interface IFirstInterface
{
    ...
}

internal interface ISecondInterface
{
    IFirstInterface First{ get; }
    ...
}

public class Implementer : ISecondInterface
{
    public IFirstInterface First {get; private set;}
    ...
}

Mes questions:

  1. Pourquoi les membres d'interfaces internes doivent être publiquement mises en œuvre? Si vous implémentez l'interface sur une classe interne, ne devrait pas mises en œuvre, les membres de l'interne? Ce n'est pas un gros problème depuis l'interface de membres ne sera pas accessible au public de toute façon, compte tenu de la classe interne. Il semble contre-intuitif.

  2. Le principal problème est avec le scénario ci-dessus, car je ne peut pas avoir un public getter pour IFirstInterface car il est soi-disant une interface interne c'est à dire j'obtiens l'erreur suivante à partir du compilateur:

Incompatible accessibilité: de la propriété
type 'IFirstInterface" est moins
accessibles de la propriété
'Oeuvre.D'abord"

Est-il un moyen de contourner cela?

Note: je me rends compte qu'il n'y a probablement que peu de valeur dans ce refactoring de l'exercice, mais j'ai pensé que ce serait une bonne façon pour moi de comprendre plus en profondeur les implications de l'intérieur de modificateur.

  • Si c'est une option, vous pouvez contourner la limitation de l'interface des méthodes de public, en utilisant une classe de base abstraite à la place.
InformationsquelleAutor jpoh | 2009-08-03