Akzeptieren eine begrenzte Menge von Subtypen in einem Verfahren Argumente
Frage
Dies ist mit C # und .net 3.5
Lassen Sie uns sagen, ich habe die folgende Methode:
myMethod(myBaseClass mbc)
In meinem Projekt, alle folgenden Klassen erben von MyBaseClass.
ot1:myBaseClass
ot2:myBaseClass
ot3:myBaseClass
ot4:myBaseClass
Gibt es irgendwelche Tricks, die mir myMethod mit ot1 und OT3 verwenden lassen, aber NICHT ot2 und OT4, oder muss ich im Grunde für jeden Typ überlasten ich zulassen?
Lösung
Eine Schnittstelle. Ändern Sie Ihre Methodensignatur
myMethod(ICastableAsMyBaseClass mbc)
Dann ot1 haben und OT3 ICastableAsMyBaseClass
implementieren.
Andere Tipps
Sie können die Klasse der MBC zur Laufzeit überprüfen, aber offensichtlich, dass würden Sie nicht mit der falschen Zeit zum Zeitpunkt der Kompilierung von Aufruf die Methode verhindern.
Wenn Sie Compiler-Typprüfung Sie die Methode für jede Art Überlastung müssen Sie zulassen möchten.