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