我正在使用以下代碼來比較類型,以便DataContractSerializer將在必要時使用正確類型重新初始化。類型比較不返回預期結果
private void InitializeSerializer(Type type)
{
if (this.serializer == null)
{
this.serializer = new DataContractSerializer(type);
this.typeToSerialize = type;
}
else
{
if (this.typeToSerialize != null)
{
if (this.typeToSerialize.GetType() != type.GetType())
{
this.serializer = new DataContractSerializer(type);
this.typeToSerialize = type;
}
}
}
}
出於某種原因,當我比較兩種結果始終是真的,我從來沒有進入最後的「如果」聲明,並重新初始化我的串行器。
我可以在比較設置一個破發點,並清楚地看到,兩種類型 List<Host>
(this.typeToSerialize.GetType())和 Post
(type.GetType())
主機和郵政共享一個共同的祖先,但這不應該影響結果。
如果您正在使用Visual Studio,您是否曾嘗試在調試器中在此行上粘貼斷點,並且程序在此處中斷時在立即窗口中運行這兩種方法以查看產生了哪些輸出?使用.equals()嘗試 – 2010-10-07 13:44:59
? – vulkanino 2010-10-07 13:47:55