jestem początkującym z C# i nie może znaleźć żadnej odpowiedzi na to:Jak przekazać prawidłową akcję <Interface>?
Im próbuje przekazać działania z jakiegoś parametru interfejsu, ale przeforsować funkcji z obiektami, które rozciągają się do tego interfejsu (lub klasy)
// some class extending interface
public class IntEvent : IFace{}
public class MoveEvent : IFace{}
// function i like to use to verify Action
static void setAction(Action<IFace> evt) {
// evt ...
}
// function to delegate as Action
static void evtCheck(IntEvent evt) {
// some func
}
static void evtMove(MoveEvent evt) {
// some func
}
// class {
// call method inside class and delegate this function :
setAction(evtCheck);
setAction(evtMove);
Otrzymuję błąd, że "evtCheck(IntEvent)
nie można przekonwertować na Action<IFace>
", nawet jeśli IntEvent
rozszerza interfejs IFace
.
Jak rozwiązać ten problem? Może muszę użyć Func lub Delegata?
Tak, próbuję to zrobić. Funkcje działania zawsze oczekują obiektu, który rozszerza ten sam interfejs lub obiekt. Ok, popatrzę na wzór projektu odwiedzającego. – turbosqel