private object FastCreateObject(Type objtype) { try { if (_createrow != null) { return(_createrow()); } else { DynamicMethod dynMethod = new DynamicMethod("_", objtype, null); ILGenerator ilGen = dynMethod.GetILGenerator(); ilGen.Emit(OpCodes.Newobj, objtype.GetConstructor(Type.EmptyTypes)); ilGen.Emit(OpCodes.Ret); _createrow = (CreateRow)dynMethod.CreateDelegate(typeof(CreateRow)); return(_createrow()); } } catch (Exception exc) { throw new Exception(string.Format("Failed to fast create instance for type '{0}' from assemebly '{1}'", objtype.FullName, objtype.AssemblyQualifiedName), exc); } }
public Row(int row, int column) //конструктор { onRowCreate += new CreateRow(Cell.Re_Linked_atRow); //(класс Cell) // поиск границ соседей лабиринта this.row = row; for (int i = 0; i < Grid.rL.Capacity; i++) //пока не привысили количество заданных строк { for (int j = 0; j < column; j++) //пока не привысили количество заданных столбцов { cL.Add(new Column(column)); // создаем столбцы (см class Column) } } onRowCreate.Invoke(); }
protected void GetData(SpecialSqlController.Tables table, CreateRow create) { DataList.Clear(); List <Dictionary <string, string> > dataList = Controller.GetAllFromWithNames(table, "Enable=1"); foreach (var d in dataList) { Dictionary <string, string> r = create(d); if (r.Count > 0) { DataList.Add(r); } } }