Hello! I have 2 problems with an event handler. 1: I am implementing the interface ICommand and Visual Stuido tells me that the interface member CanExecuteChanged or one of its overloads is not implemented. 2: I know how to write custom set and get methods for properties in cobol, in c# I can do the same for properties but also can I write custom add and remove methods for event handlers, but how can i achieve this in cobol? My C# code i want to translate to cobol code: class RelayCommand : ICommand { private readonly Action object _execute; private readonly Predicate object _canExecute; public RelayCommand(Action object execute) : this(execute, null) { } public RelayCommand(Action object execute, Predicate object canExecute) { if (execute == null) throw new ArgumentNullException("execute"); _execute = execute; _canExecute = canExecute; } public bool CanExecute(object parameter) { return _canExecute == null ? true : _canExecute(parameter); } public event EventHandler CanExecuteChanged { add { CommandManager.RequerySuggested += value; } remove { CommandManager.RequerySuggested -= value; } } public void Execute(object parameter) { _execute(parameter); } } So far my cobol code is: class-id. RelayCommand as "wpfTest1.Commands.RelayCommand" implements type "System.Windows.Input.ICommand". environment division. configuration section. repository. . static. working-storage section. end static. object. working-storage section. 01 _execute type "System.Action"[type "System.Object"] private. 01 _canExecute type "System.Predicate"[type "System.Object"] private. 01 CanExecuteChanged type "System.EventHandler" event public as "CanExecuteChanged". method-id. "New". procedure division using by value oExecute as type "System.Action"[type "System.Object"]. invoke self::"New"(oExecute, null) end method "New". method-id. "New". procedure division using by value oExecute as type "System.Action"[type "System.Object"] lCanExecute as type "System.Predicate"[type "System.Object"]. if oExecute = null raise type "System.ArgumentNullException"::"New"("_execute") end-if set _execute to oExecute set _canExecute to lCanExecute end method "New". method-id. "CanExecute" public. procedure division using by value oParameter as type "System.Object" returning lRes as condition-value. if self::"_canExecute" = null set lRes to true else set lRes to self::"_canExecute"::"Invoke"(oParameter) end-if end method "CanExecute". method-id. "Execute" public. procedure division using by value oParameter as type "System.Object". invoke self::"_execute"::"Invoke"(oParameter) end method "Execute". end object. end class RelayCommand. Thanks in advance for any help. Best regards, Thomas
↧