Example #1
0
        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());
                }
            }
        }
Example #2
0
        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());
                }
            }
        }
        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);
                }
            }
        }