1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
class Program
{
static void Main(string[] args)
{
MonDT dt = new MonDT(new List<string>(new string[] { "cle", "valeur" }), new List<List<Value>>(new List<Value>[] {
new List<Value>(new Value[] { new Value("1"), new Value("toto") }),
new List<Value>(new Value[] { new Value("2"), new Value("titi") }),
new List<Value>(new Value[] { new Value("3"), new Value("tata") })
}));
Console.WriteLine(dt[1]["valeur"].value);
dt[1]["valeur"].value = "plop";
Console.WriteLine(dt[1]["valeur"].value);
Console.ReadKey();
}
}
public class Value
{
private string _value = string.Empty;
public string value
{
get
{
return _value;
}
set
{
_value = value;
OnChanged();
}
}
public delegate void ChangedEvent(Value pItem);
public event ChangedEvent changed;
protected virtual void OnChanged()
{
if (changed != null)
{
changed(this);
}
}
public Value(string value)
{
this.value = value;
}
}
public class Record
{
private List<string> Columns;
private List<Value> Values;
public Record(List<string> columns, List<Value> values)
{
this.Columns = columns;
this.Values = values;
}
public Value this[int Index]
{
get
{
return Values[Index];
}
set
{
Values[Index] = value;
}
}
public Value this[string Column]
{
get
{
for (int i = 0, cpt = Columns.Count; i < cpt; i++)
{
if (Columns[i] == Column)
{
return Values[i];
}
}
throw new KeyNotFoundException();
}
set
{
for (int i = 0, cpt = Columns.Count; i < cpt; i++)
{
if (Columns[i] == Column)
{
Values[i] = value;
break;
}
}
}
}
public List<Value> GetValues()
{
return Values;
}
}
public class MonDT
{
private List<List<Value>> Values;
private List<string> Columns;
public MonDT(List<string> columns, List<List<Value>> values)
{
this.Values = values;
foreach (var lvalues in this.Values)
{
foreach (var value in lvalues)
{
value.changed += new Value.ChangedEvent(Check);
}
}
this.Columns = columns;
}
public Record this[int Index]
{
get
{
return new Record(Columns, Values[Index]);
}
set
{
Values[Index] = value.GetValues();
}
}
void Check(Value pItem)
{
Console.WriteLine("value changed !");
foreach (var ligne in Values)
{
//check here
}
}
} |
Partager