public IList <IObjRef> ExtractObjRefList(Object objValue, IObjRefProvider oriProvider, IList <IObjRef> targetOriList, EntityCallback entityCallback) { if (objValue == null) { if (targetOriList == null) { targetOriList = EmptyList.Empty <IObjRef>(); } return(targetOriList); } if (objValue is IList) { IList list = (IList)objValue; if (targetOriList == null) { targetOriList = new List <IObjRef>(list.Count); } for (int a = 0, size = list.Count; a < size; a++) { Object objItem = list[a]; targetOriList.Add(GetCreateObjRef(objItem, oriProvider)); if (entityCallback != null) { entityCallback(objItem); } } } else if (objValue is IEnumerable) { IEnumerator objEnumerator = ((IEnumerable)objValue).GetEnumerator(); if (targetOriList == null) { targetOriList = new List <IObjRef>(); } while (objEnumerator.MoveNext()) { Object objItem = objEnumerator.Current; targetOriList.Add(GetCreateObjRef(objItem, oriProvider)); if (entityCallback != null) { entityCallback(objItem); } } } else { if (targetOriList == null) { targetOriList = new List <IObjRef>(1); } targetOriList.Add(GetCreateObjRef(objValue, oriProvider)); if (entityCallback != null) { entityCallback(objValue); } } return(targetOriList); }
public IObjRef GetCreateObjRef(Object obj, IObjRefProvider oriProvider) { if (obj == null) { return(null); } if (obj is IObjRef) { return((IObjRef)obj); } IEntityMetaData metaData = ((IEntityMetaDataHolder)obj).Get__EntityMetaData(); return(oriProvider.GetORI(obj, metaData)); }