2009-12-09 2 views
1

Cette propriété de classe est ce que j'essaie de refactoriser dans une interface.Comment une propriété implémentée automatiquement ayant différents niveaux d'accès peut-elle être décrite par une interface?

public class Stuff : IStuff { 
    public int Number { 
     get; 
     protected internal set; 
    } 
} 

Visual Studio 2008 Outils de refactoring extraire l'interface suivante

// Visual Studio 2008's attempt is: 
public interface IStuff { 
    int Number { get; } 
} 

Le compilateur C# se plaint avec l'erreur:

'Stuff.Number.set' adds an accessor not found in interface member 'IStuff.DataOperations' 

(Ceci est l'un des rares circonstances que je INTRODUISE où Visual Studio génère du code qui provoque une situation de compilation incorrecte.)

Existe-t-il une solution directe pour extraire cette propriété dans une interface sans faire d'ensemble distinct et obtenir des membres/méthodes sur la classe?

+2

Mine produit la même interface et compilé fin ..... – CSharpAtl

+0

Je vois l'erreur lorsque vous ajoutez le préfixe 'IStuff' au nom de la propriété' Number' .... – CSharpAtl

Répondre

2

Je l'ai testé avec les éléments suivants:

class bla : Ibla { 
    public int Blargh { get; protected internal set; } 
} 

interface Ibla { 
    int Blargh { get; } 
} 

et il fonctionne très bien. Avez-vous implémenté l'interface correctement?

+1

Correct - merci. Je pense que c'était un effet secondaire d'avoir d'autres erreurs de compilation dans mon code. –

Questions connexes