@@ -89,4 +89,85 @@ public System.Guid this[int index]
8989 }
9090 }
9191 """ ;
92+
93+ public static string RepeatedFieldDecimalWrapper = """
94+ class RepeatedFieldDecimalWrapper : IListWithRangeAdd<decimal>
95+ {
96+ private readonly Google.Protobuf.Collections.RepeatedField<string> _internList;
97+
98+ public RepeatedFieldDecimalWrapper(Google.Protobuf.Collections.RepeatedField<string> internList)
99+ {
100+ this._internList = internList;
101+ }
102+
103+ public System.Collections.Generic.IEnumerator<decimal> GetEnumerator()
104+ {
105+ using var enumerator = _internList.GetEnumerator();
106+ while (enumerator.MoveNext())
107+ {
108+ yield return decimal.Parse(enumerator.Current, System.Globalization.CultureInfo.InvariantCulture);
109+ }
110+ }
111+
112+ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
113+ {
114+ return GetEnumerator();
115+ }
116+
117+ public void Add(decimal item)
118+ {
119+ _internList.Add(item.ToString(System.Globalization.CultureInfo.InvariantCulture));
120+ }
121+
122+ public void Add(IEnumerable<decimal> items)
123+ {
124+ _internList.AddRange(items.Select(i => i.ToString(System.Globalization.CultureInfo.InvariantCulture)));
125+ }
126+
127+ public void Clear()
128+ {
129+ _internList.Clear();
130+ }
131+
132+ public bool Contains(decimal item)
133+ {
134+ return _internList.Contains(item.ToString(System.Globalization.CultureInfo.InvariantCulture));
135+ }
136+
137+ public void CopyTo(decimal[] array, int arrayIndex)
138+ {
139+ System.Linq.Enumerable.ToArray(System.Linq.Enumerable.Select(_internList, s => decimal.Parse(s, System.Globalization.CultureInfo.InvariantCulture))).CopyTo(array, arrayIndex);
140+ }
141+
142+ public bool Remove(decimal item)
143+ {
144+ return _internList.Remove(item.ToString(System.Globalization.CultureInfo.InvariantCulture));
145+ }
146+
147+ public int Count => _internList.Count;
148+
149+ public bool IsReadOnly => _internList.IsReadOnly;
150+
151+ public int IndexOf(decimal item)
152+ {
153+ return _internList.IndexOf(item.ToString(System.Globalization.CultureInfo.InvariantCulture));
154+ }
155+
156+ public void Insert(int index, decimal item)
157+ {
158+ _internList.Insert(index, item.ToString(System.Globalization.CultureInfo.InvariantCulture));
159+ }
160+
161+ public void RemoveAt(int index)
162+ {
163+ _internList.RemoveAt(index);
164+ }
165+
166+ public decimal this[int index]
167+ {
168+ get => decimal.Parse(_internList[index], System.Globalization.CultureInfo.InvariantCulture);
169+ set => _internList[index] = value.ToString(System.Globalization.CultureInfo.InvariantCulture);
170+ }
171+ }
172+ """ ;
92173}
0 commit comments