0
在我的WPF應用程序,我在的IValueConverter下面的代碼位:什麼時候是一個特定的類型實際上是一個System.Object?
if (value.GetType().BaseType != typeof(Member))
return string.Empty;
Member
是自動生成的實體框架對象。當綁定到List<Member>
的屬性時,它按預期工作 - 轉換器接受此比較並不返回。
我目前正在爲這部分代碼編寫一些單元測試。所以,我這個測試吧:
MemberConverter conv = new MemberConverter();
Member mem = new Member{ MemberName = "Arnold" };
var result = conv.Convert((Member)mem, typeof(string), null, null);
而且result
回來爲String.Empty
。
當我逐句通過代碼時,它的類型比較失敗了。我自己產生的mem
對象有BaseType
的System.Object
。
我可以理解爲什麼基本類型可能會返回一個普通的舊對象。但我不明白爲什麼在這兩種情況下表現不同。有人可以解釋,並告訴我我做錯了什麼?
每個對象始終是一個'System.Object' – Jodrell 2014-11-03 16:58:54
基本類型是給定類型繼承其成員的直接類型。對於直接從'Member'派生的生成類型,其基類型也是'Member'。但是,如果您傳遞'Member'的實例,則會詢問'Member'類型的基類型。由於所有對象(_unusally_)都從'System.Object'繼承,所以你會得到這種類型。 – IllidanS4 2014-11-03 17:30:17