Я пытаюсь создать простую структуру readonly, подобную структуре datatable, я буду использовать ее для генерации SQL-команд, и я ищу максимальную производительность, вот что я придумал, идея состоит в том, чтобы генерировать Rows[]
от IList<T>
.Создание простой структуры readonly, аналогичной DataTable
class Column
{
public string Name { get; private set; }
public string TableName { get; private set; }
public bool IsPrimaryKey { get; private set; }
public SqlDbType SqlType { get; private set; }
public string SqlTypeString { get { return SqlType.ToString(); } }
//etc..
public Column(PropertyInfo propertyInfo){//init everything}
}
class Cell
{
public Column Column { get; private set; }
public object Value { get; private set; }
public Cell(object Value,Column Column)
{
this.Column = Column;
this.Value = Value;
}
}
class Row
{
public object[] Cells { get; private set; }
public Row(Cell[] Cells)
{
this.Cells = new Cell[Cells.Count()];
for (int i = 0; i < Cells.Count(); i++)
{
this.Cells[i] = Cells[i];
}
}
}
каждая ячейка содержит ссылку на его объект столбца, который я не уверен, если его правильно, мне было интересно, если уронить ссылку на столбец из ячейки и используя порядок объекта, чтобы получить ссылку столбец лучший вариант, другими словами, я хочу, чтобы микро оптимизировать его с его простой структуры.
Вам не нужен класс 'Cell' вообще. Вы можете посмотреть на похожий код, который я написал, с поддержкой сильной печати, на странице https://github.com/ShomreiTorah/Libraries/blob/master/ShomreiTorah.Singularity/Row.cs – SLaks
Посмотрите на микро-ORM, такие как Dapper, которые уже все это для вас. – SLaks
Есть несколько очевидных проблем с тем, что вы здесь делаете, и я уверен в ряде проблем, которые я не вижу, потому что я не полностью понимаю цель этой структуры данных. Какую проблему вы пытаетесь решить с этим? Вы пробовали существующие рамки, чтобы узнать, могут ли они решить одну и ту же проблему лучше? – StriplingWarrior