2010-12-04 8 views
0

Wenn ich Benutzer zwingen möchte, eine Schnittstelle zu implementieren, um eine private Methode zu implementieren, gibt es einen Trick?Wenn ich Benutzer zwingen möchte, eine Schnittstelle zu implementieren, um eine private Methode/Eigenschaft zu implementieren, gibt es einen Trick?

Es scheint, als ob ich in der Lage sein soll, etwas zu den Auswirkungen von tun:

namespace cc 
{ 
    interface Icd 
    { 
     int one { get; private set; } 
     int two { get; private set; } 
    } 
} 

Ich verstehe, warum dies eine Schnittstelle, nachdem alle nicht funktioniert, ist die garantierte öffentliche Frontend für Objekte von abgeleiteten es muss jedoch eine Möglichkeit geben, Codierer, die meine Schnittstelle implementieren, zu zwingen, den Setzer privat zu implementieren.

Würde eine abstrakte Klasse in diesem Fall funktionieren? Ich möchte keinen Code definieren, zwinge nur, wer meine Schnittstelle implementiert, um einen privaten Setter für Eigenschaften zu implementieren.

Edit: Ja, das ist C# :-)

+0

Ist das C#? Wir könnten vielleicht eine super-klugey-sprachspezifische "Lösung" entwickeln, wenn wir wüssten, in welcher Sprache. – Ken

+0

Ja, C#, sorry sollte angegeben haben, dass – Matt

+1

Auf den zweiten Gedanken, was ist der Anwendungsfall hier? Eine Schnittstelle hat keinen Code, und jeder, der die Schnittstelle verwendet, kann keine private Methode aufrufen. Wie ist das anders als "Set" einfach wegzulassen? – Ken

Antwort

2

Sie können nicht die Implementierung der Eigenschaft steuern. Zeitraum. Sie zu zwingen, den Setter privat zu machen, macht keinen Sinn, kein Verbraucher der Schnittstelle könnte ihn jemals nennen. Es hat keinen Sinn, einen Setter zu deklarieren, den sowieso niemand anrufen kann. Jetzt funktioniert es funktioniert, es gibt keinen Setter zu nennen. Das ist ziemlich privat.

3

eine abstrakte Basisklasse verwenden statt einer Schnittstelle:

public abstract class Foo 
{ 
    public abstract int MyProperty { get; protected set; } 
} 
2

Wenn es privat ist, scheint es, als ob, was Sie wirklich an der Kontrolle interessiert sind einige innerbetriebliche Code-Schreib-Konventionen oder so ähnlich. Vielleicht möchten Sie wirklich etwas von Ihrer Versionsverwaltungssoftware sehen, die Commits ablehnen würde, die den Regeln nicht folgen?

+0

Benutzerdefinierte FxCop-Regel, vielleicht? –

Verwandte Themen