3

获取属性和字段的值或调用方法很容易,但我很难显示事件处理程序。我不能像 PropertyInfo 那样只使用 GetValue 函数。

我已尝试按照https://web.archive.org/web/20131213074318/http://bobpowell.net/eventsubscribers.aspx的说明进行操作- 这可以在Windows 窗体中显示事件。

但是,这不适用于 Silverlight,因为 Silverlight 没有“EVENTHANDERLIST”。

关于如何在 Silverlight 中显示事件 VALUES 的任何想法?

我试过这个

namespace eventhandlers
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            Type t = sender.GetType();
            FieldInfo fi = t.GetFields(BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic);

            EventHandler eh = (EventHandler)fi.GetValue(sender);

            System.Reflection.EventInfo[] eventInfo = button1.GetType().GetEvents();                
            Delegate[] dels = eh.GetInvocationList();
            foreach(Delegate del in eh.GetInvocationList() )
            {
                string text = del.Method.Name;
                textBlock1.Text = text + ". " + textBlock1.Text;
            }
        }
    }
}

但我收到错误“用户代码未处理 FieldAccessException”和“SilverlightApp1.MainPage.button1_Click (System.Object, System.Windows.RoutedEventArgs)”方法“System.Windows.Controls.Primitives.ButtonBase._isLoaded”无法访问场。” 在

EventHandler eh = (EventHandler)fi.GetValue(sender);
4

0 回答 0