Bonjour,

En Delphi j'utilise souvent les procédure et fonction "of object". J'essai de faire la même chose en C#

Exemple Delphi :
Déclaration de la procédure "of object"
Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
TLogProc = procedure(Const Texte : String) of object;

Branchement dans une classe
Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
TMaClasse = class(TMonAncetre)
private
   FLog : TLogProc;
   ...
   procedure DoLog(Const Texte : String);
public
   property LogProc : TLogProc write FLog;
   ...
   procedure FaireQuelqueChoseEtLeLogger;
end;
 
procedure TMaClasse .DoLog(Const Texte : String);
begin
   if (Assigned(FLog)) then FLog(Texte);
end;
 
procedure TMaClasse .FaireQuelqueChoseEtLeLogger;
begin
   ...
   DoLog('Un texte de Log');
   ...
end;

Utilisation
Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
procedure FrmTest.Logguer(Const Texte : String);
begin
   Memo.Lines.Add(Texte);
end;
 
procedure FrmTest.FaireQuelqueChose;
begin
   MonObjet := TMaClasse .Create;
   try
      MonObjet.LogProc := Logguer;
      MonObjet.FaireQuelqueChoseEtLeLogger;
   finally
      if (Assigned(MonObjet)) then
         FreeAndNil(MonObjet)
   end;
end;

J'ai pensé au délégué pour le faire mais je ne suis pas encore très à l'aise avec.
Suis-je sur la bonne voie et dans ce cas pouvez-vous m'éclairer un peu plus sur sur la mise en oeuvre ?
Ou alors est-ce que je me trompe complètement ? Mais dans ce cas, est-ce possible et comme le faire ?