Keresés

Új hozzászólás Aktív témák

  • Karma

    félisten

    válasz tototos #5623 üzenetére

    Íme:

    class LDF_akarmi
    {
    private DataTable _signals = new DataTable("Signals");
    private DataTable _frames = new DataTable("Frames");

    public LDF_akarmi()
    {
    InitTable(_signals, SignalTableColumns);
    InitTable(_frames, FrameTableColumns);
    }

    private static readonly IList<Tuple<string, Type>> SignalTableColumns = new[]
    {
    new Tuple<string, Type>("Name", typeof(string)),
    new Tuple<string, Type>("Size", typeof(byte)),
    new Tuple<string, Type>("Initval", typeof(UInt16)),
    new Tuple<string, Type>("TypeID", typeof(string)),
    };

    private static readonly IList<Tuple<string, Type>> FrameTableColumns = new Tuple<string, Type>[]
    {
    new Tuple<string, Type>("Name", typeof(string)),
    new Tuple<string, Type>("ID", typeof(UInt16)),
    new Tuple<string, Type>("Size", typeof(byte)),
    new Tuple<string, Type>("SlotTime", typeof(Single)),
    new Tuple<string, Type>("Transmit", typeof(byte))
    };

    private void InitTable(DataTable table, IEnumerable<Tuple<string, Type>> columns)
    {
    table.Columns.AddRange(columns.Select(col => new DataColumn(col.Item1, col.Item2)).ToArray());
    }
    }

    Szerintem elég drasztikus a különbség. A DataColumn[] tagváltozóid egyébként meg teljesen feleslegesek, így tömörítve meg még csak létre se jönnek külön. Ja és for ciklus se kellett, hiszen van AddRange metódusa a Columnsnek :)

    Amúgy miért használsz DataSetet meg DataTable-t? Megjelenítésnél kihasználod ezeket az osztályokat? Mert ha nem, akkor valószínűleg jobban járnál, ha a Signalnak és a Frame-nek külön osztályt vezetnél be az ilyet táblás zsonglőrködés helyett.

Új hozzászólás Aktív témák