我有這樣的:如何通過反射來區分集合與單個對象?
var Virtual = Property.GetValue(Entity, null);
實體正在使用實體框架的倉庫拉。
如何確定它是單個對象還是集合?
我試着檢查類型,但不確定要比較它。
經檢查與調試器,虛擬或者是一個實例化的單class
的DynamicProxy
,或實例化的ICollection
的HashSet
。如果.GetType()
是在DynamicProxy
用這個被拋出:
Object reference not set to an instance of an object.
我也試過這樣:
var test = (IEnumerable<object>)Virtual;
if (test.Count() > 0)
其作品的收集,但無法在單個對象上。
我也試過這樣:
if (Virtual is Enumerable)
,但它是假的,即使是集合。
我如何通過反思來辨別兩者?
'Enumerable'是一個靜態類 - 你想'如果(虛擬是IEnumerable)' – Lee
你嘗試過測試虛擬是IEnumerable。 IEnumerable將是泛型和非泛型集合,枚舉等的共同特徵。請記住,該字符串也實現了IEnumerable,但可能不應將其視爲集合。 – LeffeBrune
@Lee - 謝謝,這確實沒有拋出異常。 –