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; }
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); } }
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); }