发布一个关于股票chart的项目(反编译vadimv.com)源码,并总结一下反编译过程中的问题(只是部分)
时间:2010-11-24 来源:永恒的记忆
一、待解决问题
1.主界面
进入主界面后,图表并没有显示,当点击网站下面的“term of services”后或拉图表下面的滚动条后才显示。
图1
在原网站中进去是
图2
2.伸缩后其他股票图不见了
当拉上面的伸缩控件后,当再次打开其他股票代码(Symbol)时图表又不显示了,执行上诉操作后又显示了。
图3
当拉伸后,再次出现了图1现象。
二、反编译问题
1.下载网站的xap文件,解压后发现存在XAML源文件,并未经过编译
图4
后来发现是在做项目时要将XAML文件的属性设置为“内容”
2.用reflector打开时发现下面
大多数项目在"-{}"中只有"module"而在此项目中有三项,原来是定义了一个没有命名空间的属性类。
3.当反编译AccessBase<T>这个类时发现存在下面奇怪的代码
public IEnumerable GetEnumerator()
{
<GetEnumerator>d__0<T> d__ = new <GetEnumerator>d__0<T>(-2);
d__.<>4__this = (AccessBase<T>) this;
return d__;
}
// Nested Types
[CompilerGenerated]
private sealed class <GetEnumerator>d__0 : IEnumerable<object>, IEnumerable, IEnumerator<object>, IEnumerator, IDisposable
{
// Fields
private int <>1__state;
private object <>2__current;
public AccessBase<T> <>4__this;
public List<T>.Enumerator <>7__wrap2;
private int <>l__initialThreadId;
public T <item>5__1;
// Methods
[DebuggerHidden]
public <GetEnumerator>d__0(int <>1__state)
{
this.<>1__state = <>1__state;
this.<>l__initialThreadId = Thread.CurrentThread.ManagedThreadId;
}
private void <>m__Finally3()
{
this.<>1__state = -1;
this.<>7__wrap2.Dispose();
}
private bool MoveNext()
{
try
{
switch (this.<>1__state)
{
case 0:
this.<>1__state = -1;
this.<>4__this.EnsureData();
this.<>7__wrap2 = this.<>4__this.data.GetEnumerator();
this.<>1__state = 1;
while (this.<>7__wrap2.MoveNext())
{
this.<item>5__1 = this.<>7__wrap2.Current;
if (!(this.<item>5__1.GetType() == typeof(T)))
{
goto Label_00B9;
}
this.<>2__current = this.<item>5__1;
this.<>1__state = 2;
return true;
Label_00B1:
this.<>1__state = 1;
Label_00B9:;
}
this.<>m__Finally3();
break;
case 2:
goto Label_00B1;
}
return false;
}
fault
{
this.System.IDisposable.Dispose();
}
}
[DebuggerHidden]
IEnumerator<object> IEnumerable<object>.GetEnumerator()
{
if ((Thread.CurrentThread.ManagedThreadId == this.<>l__initialThreadId) && (this.<>1__state == -2))
{
this.<>1__state = 0;
return (AccessBase<T>.<GetEnumerator>d__0) this;
}
AccessBase<T>.<GetEnumerator>d__0 d__ = new AccessBase<T>.<GetEnumerator>d__0(0);
d__.<>4__this = this.<>4__this;
return d__;
}
[DebuggerHidden]
IEnumerator IEnumerable.GetEnumerator()
{
return this.System.Collections.Generic.IEnumerable<System.Object>.GetEnumerator();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
void IDisposable.Dispose()
{
switch (this.<>1__state)
{
case 1:
case 2:
try
{
}
finally
{
this.<>m__Finally3();
}
break;
}
}
// Properties
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return this.<>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return this.<>2__current;
}
}
}
后来google了一下,发现是使用了yield关键字
了解yield:http://archive.cnblogs.com/a/1863845/
三、源码下载:http://files.cnblogs.com/salam/SilverChart.rar