public void EqualsTest()
        {
            BindingMemberInfo a = new BindingMemberInfo("A.B.C");
            BindingMemberInfo b = new BindingMemberInfo("A.B.C");

            Assert.AreEqual(a, b, "EQUALS1");

            b = new BindingMemberInfo("A.B");
            Assert.IsFalse(a.Equals(b), "EQUALS2");
        }
Esempio n. 2
0
        public void Equals_Invoke_ReturnsExpected(BindingMemberInfo info, object other, bool expected)
        {
            if (other is BindingMemberInfo otherInfo)
            {
                Assert.Equal(expected, info == otherInfo);
                Assert.Equal(!expected, info != otherInfo);
            }

            Assert.Equal(expected, info.Equals(other));
        }
Esempio n. 3
0
        private void SetDataConnection(
            object newDataSource
            , BindingMemberInfo newDisplayMember
            , bool force
            )
        {
            bool flag  = _dataSource != newDataSource;
            bool flag2 = !_displayMember.Equals(newDisplayMember);

            if (!_inSetDataConnection)
            {
                try
                {
                    if ((force || flag) || flag2)
                    {
                        _inSetDataConnection = true;
                        IList list  = (_dataManager != null) ? _dataManager.List : null;
                        bool  flag3 = _dataManager == null;
                        this.UnwireDataSource();
                        _dataSource    = newDataSource;
                        _displayMember = newDisplayMember;
                        this.WireDataSource();

                        if (_isDataSourceInitialized)
                        {
                            CurrencyManager manager = null;

                            if (((newDataSource != null) && (this.BindingContext != null)) && (newDataSource != Convert.DBNull))
                            {
                                manager = (CurrencyManager)this.BindingContext[newDataSource, newDisplayMember.BindingPath];
                            }

                            if (_dataManager != manager)
                            {
                                if (_dataManager != null)
                                {
                                    _dataManager.ItemChanged     -= new ItemChangedEventHandler(this.DataManager_ItemChanged);
                                    _dataManager.PositionChanged -= new EventHandler(this.DataManager_PositionChanged);
                                }

                                _dataManager = manager;

                                if (_dataManager != null)
                                {
                                    _dataManager.ItemChanged     += new ItemChangedEventHandler(this.DataManager_ItemChanged);
                                    _dataManager.PositionChanged += new EventHandler(this.DataManager_PositionChanged);
                                }
                            }

                            if (((_dataManager != null) && (flag2 || flag)) && (((_displayMember.BindingMember != null) && (_displayMember.BindingMember.Length != 0)) && !this.BindingMemberInfoInDataManager(_displayMember)))
                            {
                                throw new ArgumentException(res.Argument_WrongDisplayMember, "newDisplayMember");
                            }
                            if (((_dataManager != null) && ((flag || flag2) || force)) && (flag2 || (force && ((list != _dataManager.List) || flag3))))
                            {
                                ConstructorInfo ci = typeof(ItemChangedEventArgs).GetConstructor(
                                    BindingFlags.CreateInstance | BindingFlags.NonPublic | BindingFlags.Instance
                                    , null
                                    , new Type[] { typeof(int) }
                                    , null
                                    );

                                Debug.Assert(ci != null, "ci != null");

                                this.DataManager_ItemChanged(
                                    _dataManager
                                    , (ItemChangedEventArgs)ci.Invoke(new object[] { -1 })
                                    );
                            }
                        }
                    }

                    if (flag)
                    {
                        this.OnDataSourceChanged(EventArgs.Empty);
                    }

                    if (flag2)
                    {
                        this.OnDisplayMemberChanged(EventArgs.Empty);
                    }
                }
                finally
                {
                    _inSetDataConnection = false;
                }
            }
        }