Beispiel #1
0
        public void SetDataSource <T>(IList <T> list)
        {
            IDataTableAdapter <T> adapter = DataTableAdapterFactory.Singleton.New <T>(DataTableConfig.PropertyColumns);

            _dataTable = adapter.Get(list);

            this.RaiseDataSourceChangedEvent(global::System.EventArgs.Empty);
        }
        public DataTableObjectBuilder(IDataTableAdapter dataTableAdapter)
        {
            if (dataTableAdapter == null)
            {
                throw new ArgumentNullException(nameof(dataTableAdapter));
            }

            _dataTableAdapter = dataTableAdapter;
        }
Beispiel #3
0
        public IDataTableAdapter <T> New <T>(IEnumerable <PropertyColumn> columns)
        {
            string adapterTypeName = GetTypeName(typeof(T), columns);

            if (_generatedAdapters.ContainsKey(adapterTypeName))
            {
                return((IDataTableAdapter <T>)_generatedAdapters[adapterTypeName]);
            }
            else
            {
                Type type = BuildAdapter(typeof(T), adapterTypeName, columns);
                IDataTableAdapter <T> adapter = (IDataTableAdapter <T>)Activator.CreateInstance(type);
                _generatedAdapters.Add(adapterTypeName, adapter);
                return(adapter);
            }
        }
Beispiel #4
0
        public void TestCreateAdapter()
        {
            DataTableAdapterFactory factory = new DataTableAdapterFactory();

            PropertyColumn[] columns = new PropertyColumn[]
            {
                new PropertyColumn("Class1.Field", "Field"),
                new PropertyColumn("Class1.Property", "Property"),
                new PropertyColumn("Time", "Time")
            };

            IDataTableAdapter <TestClass2> adapter = factory.New <TestClass2>(columns);

            List <TestClass2> list = new List <TestClass2>();

            for (int i = 0; i < 10000; i++)
            {
                list.Add(new TestClass2(new TestClass1(4, "4")));
                list.Add(new TestClass2(new TestClass1(40, "40")));
                list.Add(new TestClass2(new TestClass1(12, "12")));
                list.Add(new TestClass2());
            }

            DataTable dt = adapter.Get(list);

            Assert.IsNotNull(dt);
            Assert.AreEqual(list.Count, dt.Rows.Count);
            Assert.AreEqual(4, dt.Columns.Count);

            Assert.AreEqual(list[0].Class1.Property, dt.Rows[0]["Property"]);
            Assert.AreEqual(list[0].Class1.Field, dt.Rows[0]["Field"]);
            Assert.AreEqual(list[0].Time, dt.Rows[0]["Time"]);
            Assert.AreSame(list[0], dt.Rows[0]["DataItem"]);

            IDataTableAdapter <TestClass2> adapter2 = factory.New <TestClass2>(columns);

            Assert.AreSame(adapter, adapter2);

            PropertyColumn[] columns2 = new PropertyColumn[]
            {
                new PropertyColumn("Class1.Field", "Field")
            };

            IDataTableAdapter <TestClass2> adapter3 = factory.New <TestClass2>(columns2);

            Assert.AreNotSame(adapter, adapter3);
        }