2010-02-07 3 views
0

J'ai le code suivant et il ne compilera pas parce que le compilateur ne peut pas déterminer le type de retour de ma méthode CanExecute. Quelqu'un peut-il m'aider quant à ce qui ne va pas?ICommand _canExecute problème

class ViewCommand : ICommand 
    { 
     #region ICommand Members 

     public delegate Predicate<object> _canExecute(object param); 
     private ICommand _Execute; 

     _canExecute exe; 

     public bool CanExecute(object parameter) 
     { 
      return exe == null ? true : exe(parameter); // <-- Error no implicit conversion between Predicate<object> and bool 
     } 

... // more code 
} 

Répondre

1

L'interface ICommand déclare CanExecute comme une fonction qui prend un paramètre et retourne un bool.

Votre _canExecute prend un paramètre et retourne un Predicate<object>

La façon d'invoquer ce serait de passer le paramètre à la valeur de retour de exe

exe(parameter)(parameter); 

Je doute que c'était votre intention bien.

Je pense que vous souhaitez déclarer exe en tant que prédicat et ignorer la déclaration de délégué.

private Predicate<object> exe; 

C'est ce que je pense que vous voulez ressembler à:

class ViewCommand : ICommand 
    { 
     #region ICommand Members 

     private ICommand _Execute; 

     Predicate<object> exe; 

     public bool CanExecute(object parameter) 
     { 
      return exe == null ? true : exe(parameter); // <-- Error no implicit conversion between Predicate<object> and bool 
     } 

... // more code 
} 
+0

Maintenant, je ne le dernier, mais il toujours pas satisfait les types de retour ... ce qui pourrait être mal? –

+0

Quelle est la définition du prédicat que vous attribuez à _canExecute? –

+0

private Prédicat _canExecute (objet param); –

Questions connexes