How would I generalize this C # code to a more general method?

There are numerous occurrences of the following code in my code:

this.webBrowserCtrl.DocumentCompleted -= new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.LoginScreenLoaded);
this.webBrowserCtrl.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.AttemptLoginAnalysis);

I want to remove this and use a simple method that takes 2 inputs - however, I don't know what types will be.

    private void DefineNewDocumentCompletedHandler(TYPEA inputA, TYPEB inputB)
    {

        this.webBrowserCtrl.DocumentCompleted -= new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(inputA);
        this.webBrowserCtrl.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(inputB);

    }

Does anyone know what TYPEA and TYPEB should do? Or another way to achieve my goal?

+3
source share
3 answers

Use the delegate type for input parameters, for example:

private void DefineNewDocumentCompletedHandler(WebBrowserDocumentCompletedEventHandler inputA, WebBrowserDocumentCompletedEventHandler inputB)
{
    this.webBrowserCtrl.DocumentCompleted -= inputA;
    this.webBrowserCtrl.DocumentCompleted += inputB;
}

Usage example:

DefineNewDocumentCompletedHandler(this.LoginScreenLoaded, this.AttemptLoginAnalysis);

The syntax new <delegate type>(<name of method>)is a C # 1.x construct that is now deprecated. Starting with C # 2.0, you can simply specify the method name without parentheses, and the compiler will automatically wrap it in a delegate instance for you.

+3
source

, .

public static void DefineNewDocumentCompletedHandler(this WebBrowser webBrowser, WebBrowserDocumentCompletedEventHandler inputA, WebBrowserDocumentCompletedEventHandler inputB)
{
webBrowser.webBrowserCtrl.DocumentCompleted -= inputA;
webBrowser.webBrowserCtrl.DocumentCompleted += inputB;

}

and use it like

this.webBrowserCtrl.DefineNewDocumentCompletedHandler(this.LoginScreenLoaded, this.AttemptLoginAnalysis);
+1
source

Source: https://habr.com/ru/post/1752806/


All Articles