反编译器的不寻常代码

问题描述:

我试图通过telerik反编译器反编译一个.cs文件,并将事件处理程序的代码更改为一个不寻常的代码。反编译器的不寻常代码

private void Start_Click_1(object sender, RoutedEventArgs e) 
{ 
    WindowsRuntimeMarshal.AddEventHandler<EventHandler<Object>>(new Func<EventHandler<Object>, EventRegistrationToken>(dispatcherTimer.add_Tick), new Action<EventRegistrationToken>(dispatcherTimer.remove_Tick), new EventHandler<Object>(this.timer_Tick)); 
} 

private void timer_Tick(object sender, object e) 
{ 
} 

我不知道如何将其更改为正常。任何人都可以帮助我吗?

+5

通过输入正确的码?反编译器只会根据程序集的IL中的内容向您提供它所看到的内容,而不一定与最初编写的代码相对应。编译器可能会将原始源代码转换为其他内容。 – 2013-05-14 18:13:56

+2

之前的代码是什么?编译器生成的代码有什么问题? – Justin 2013-05-14 18:14:03

seems这是与Windows运行时一起新的东西。也许你的反编译器无法应付这个问题。

关于你的代码上面链接中的信息应该翻译成:

private void Start_Click_1(object sender, RoutedEventArgs e) 
{ 
    dispatcherTimer.Tick += timer_Tick; 
} 

private void timer_Tick(object sender, object e) 
{ 
} 
+0

感谢您的更换。完美工作! – Mac 2013-05-14 18:48:19

该行几乎肯定是变回:

this.dispatcherTimer.Tick += timer_Tick; 

,我这样说是因为它添加事件处理程序AddEventHandler和引用dispatcherTimer.add_TickdispatcherTimer.remove_Tick,这几乎肯定是Tick事件的添加和删除处理程序。

+0

这段代码抛出一个没有扩展方法的错误。但是这个代码** dispatcherTimer.Tick + = timer_Tick; **正常工作。为什么? – Mac 2013-05-14 18:47:41

+0

@Mac,我不确定,但我更新了它以反映正确的代码。感谢您的信息。 – 2013-05-14 19:30:17