كيف يمكنني تمرير مرجع الأسلوب إلى أسلوب مختلف في C #

StackOverflow https://stackoverflow.com/questions/414741

سؤال

وأود أن تمرير مرجع من طريقة إلى طريقة أخرى وتخزينها كمتغير. وفي وقت لاحق، وأود أن استخدام هذا المرجع لتحديد معالج حدث.

عند إجراء معالج الحدث، يتم تمرير إشارة طريقة مثل:

myButton.Click += new RoutedEventHandler(myButton_Click);

وإذا نظرتم منشئ ل "RoutedEventHandler" من التحسس، يبدو أن:

RoutedEventHandler(void(object, RoutedEventArgs))

ما أود القيام به هو تمرير طريقة "myButton_Click" لأسلوب ثابت مختلفة ومن ثم إنشاء معالج حدث هناك. كيف يمكنني تمرير إشارة إلى أسلوب ثابت؟ حاولت التالية ولكنها لا تجمع:

public class EventBuilder
{
    private static void(object, RoutedEventArgs) _buttonClickHandler;

    public static void EventBuilder(void(object, RoutedEventArgs) buttonClickHandler)
    {
        _buttonClickHandler = buttonClickHandler;
    }

    public static void EnableClickEvent()
    {
        myButton.Click += new RoutedEventHandler(_buttonClickHandler);
    }
}

وشكرا، بن

هل كانت مفيدة؟

المحلول

لمرجع مرجع أسلوب (تسمى مندوب في. NET)، استخدم اسم معالج، بدلا من التوقيع.

public class EventBuilder
{
    private static RoutedEventHandler _buttonClickHandler;

    public EventBuilder(RoutedEventHandler buttonClickHandler)
    {
        _buttonClickHandler = buttonClickHandler;
    }

    public static void EnableClickEvent()
    {
        myButton.Click += new RoutedEventHandler(_buttonClickHandler);
    }
}

نصائح أخرى

والمحاولة

private static delegate void(object sender, RoutedEventArgs e) _buttonClickHandler;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top