private void ApplyDynamicMemberSpecifications() { using (_log.PushContext("ApplyDynamicMemberSpecifications")) { if (0 < Data.Count) { lock (_dataSyncObject) { var newData = Data.ToList().ConvertAll(o => ((SolidPSObjectBase)o).PSObject).ToList(); UpdateDynamicMembers(newData.First()); newData.ForEach(pso => { AddDynamicMembersToPSObject(pso); AddMagicPropertiesToPSObject(pso); }); var solidifier = new PSObjectSolidifier(); for (int i = 0; i < newData.Count; ++i) { AddIndexToPSObject(newData[i], i); Data[i] = solidifier.AsConcreteType(newData[i]); } } } else if (0 < AllRecordsCount) { UpdateDynamicMembers(new PSObject()); } } }
public void AddDataObject(PSObject ps) { using (_log.PushContext("AddDataObject")) { var solidifier = new PSObjectSolidifier(); UpdateDynamicMembers(ps); AddDynamicMembersToPSObject(ps); AddMagicPropertiesToPSObject(ps); object d = solidifier.AsConcreteType(ps); if (UseDispatcher && null != Application.Current && null != Application.Current.Dispatcher && !Application.Current.Dispatcher.CheckAccess()) { //TODO: reconcile begininvoke and just invoke Application.Current.Dispatcher.BeginInvoke(new SendOrPostCallback(AddDataObjectToCollection), d); } else { AddDataObjectToCollection(d); } } }
private void ApplyDynamicMemberSpecifications() { using (_log.PushContext("ApplyDynamicMemberSpecifications")) { if (0 < Data.Count) { lock (_dataSyncObject) { var newData = Data.ToList().ConvertAll(o => ((SolidPSObjectBase) o).PSObject).ToList(); UpdateDynamicMembers(newData.First()); newData.ForEach(pso => { AddDynamicMembersToPSObject(pso); AddMagicPropertiesToPSObject(pso); }); var solidifier = new PSObjectSolidifier(); for (int i = 0; i < newData.Count; ++i) { AddIndexToPSObject(newData[i], i); Data[i] = solidifier.AsConcreteType(newData[i]); } } } else if (0 < AllRecordsCount) { UpdateDynamicMembers(new PSObject()); } } }