Ich versuche, eine geschützte Standardmethode in einer C# -Schinschnittstelle zu verwenden, aber ich kann sie nicht von meiner Implementierungsklasse aufrufen. Zum Beispiel: < /p>
interface IInterface
{
protected void Protected() { }
}
class Class : IInterface
{
public Class()
{
this.Protected(); // Fails with: 'Class' does not contain a definition for 'Protected' and no accessible extension method 'Protected' accepting a first argument of type 'Class' could be found (are you missing a using directive or an assembly reference?)
((IInterface)this).Protected(); // Fails with: Cannot access protected member 'IInterface.Protected()' via a qualifier of type 'IInterface'; the qualifier must be of type 'Class' (or derived from it)
}
}
< /code>
Sowohl direkte als auch explizite Anrufe werden nicht kompiliert. Warum ist das und wie kann ich die geschützte Standardimplementierung aus meiner Klasse aufrufen? Gibt es ein Problemumgehung oder ein empfohlenes Muster für dieses Szenario? Ich habe eine Situation, in der ich dies als abstrakte Basisklasse nicht tun kann, und muss dies für Fälle haben, in denen die Methode nicht implementiert wird.
Ich versuche, eine geschützte Standardmethode in einer C# -Schinschnittstelle zu verwenden, aber ich kann sie nicht von meiner Implementierungsklasse aufrufen. Zum Beispiel: < /p> interface IInterface { protected void Protected() { } }
class Class : IInterface { public Class() { this.Protected(); // Fails with: 'Class' does not contain a definition for 'Protected' and no accessible extension method 'Protected' accepting a first argument of type 'Class' could be found (are you missing a using directive or an assembly reference?) ((IInterface)this).Protected(); // Fails with: Cannot access protected member 'IInterface.Protected()' via a qualifier of type 'IInterface'; the qualifier must be of type 'Class' (or derived from it) } } < /code> Sowohl direkte als auch explizite Anrufe werden nicht kompiliert. Warum ist das und wie kann ich die geschützte Standardimplementierung aus meiner Klasse aufrufen? Gibt es ein Problemumgehung oder ein empfohlenes Muster für dieses Szenario? Ich habe eine Situation, in der ich dies als abstrakte Basisklasse nicht tun kann, und muss dies für Fälle haben, in denen die Methode nicht implementiert wird.
Ich suche nach einer effizienten Möglichkeit, die Codezeilen in allen Implementierungen einer bestimmten abstrakten Methode zu zählen, die in einer Schnittstelle oder einer abstrakten Klasse...
Heute habe ich bei der Arbeit an einem Projekt für einen College-Kurs „Design Patterns“ (Java 11 erforderlich) ein Problem mit der Zugriffsbeschränkung des Zugriffsmodifikators entdeckt, das durch...
Heute habe ich bei der Arbeit an einem Projekt für einen College-Kurs „Design Patterns“ (Java 11 erforderlich) ein Problem mit der Zugriffsbeschränkung des Zugriffsmodifikators entdeckt, das durch...
Ich habe eine FireBase -Datenbank, die mit bis zu zwei Apps verknüpft ist. Eine eine iOS -App und eine andere, die in node.js codiert ist und ein grundlegender Algorithmus ist, der Daten in die...
Wie können Sie eine Funktion wie folgt implementieren?
static object GetZero(Type t)
{
// If t implements INumberBase, then return INumberBase.Zero
// Otherwise, throw some arbitrary Exception
}...