我想檢查一個對象是否可以使用IsAssignableFrom
強制轉換爲某種類型。然而,我沒有得到預期的結果... 我在這裏錯過了什麼嗎?C#檢查對象是否可以投射到另一個對象失敗?
//Works (= casts object)
(SomeDerivedType)factory.GetDerivedObject();
//Fails (= returns false)
typeof(SomeDerivedType).IsAssignableFrom(factory.GetDerivedObject().GetType());
編輯:
上面的例子似乎是錯誤的,並不能反映我的問題非常好。
我在代碼DerivedType
對象被轉換爲BaseType
:
BaseType someObject = Factory.GetItem(); //Actual type is DerivedType
我也有一個PropertyType
通過反射:
PropertyInfo someProperty = entity.GetType().GetProperties().First()
我想檢查是否someObject
是分配到(澆注到)someProperty
的PropertyType
。我怎樣才能做到這一點?
你可以創建一個完整的程序來展現行爲嗎? – 2012-04-06 09:47:09
@ LasseV.Karlsen正如你在我的(現在刪除的)答案中所指出的那樣IsAssignableFrom需要一個類型而不是一個實例。 (MSDN在那裏有點誤導)從上面的代碼將有趣的知道SomeDerivedType t = factory.GetDerivedObject()作爲SomeDerivedType;'是否有效。 – Steve 2012-04-06 09:56:42