-
Notifications
You must be signed in to change notification settings - Fork 19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
关于Field和RowRecord的封装建议 #16
Comments
感谢建议,下一版本更新我们会上这部分改进! |
@herowzz 欢迎加入微信用户群参与需求讨论与问题反馈! |
新版本中包含上述的优化,就关闭这个issue了~ |
Field建议1:
private object value 或 private dynamic value;
// 代替 long_value, int_value,str_value...
// 因为long ,int, float, bool 都是值类型,即便没有set 也会有默认值,建议用一个变量存储
Field建议2:
public double get_double() => type == TSDataType.TEXT ? double.Parse(value) : (double)value;
// 内部增加类型兼容转换,
// 即便是TSDataType是INT32, 也能让外部调用通过double读取
// 最好方式是让 get() 方法能够类型兼容转换T
// TSDataType.TEXT 的存在本身就是缺陷,从而导致了 select last 都成了TEXT,
// 而每个Field允许有独立的TSDataType,却不能把select last 转为对应的数据类型
RowRecord建议3:
缺少对field_lst的访问能力
public Field this[int index]=>this.field_lst[index];
// 增加索引访问,如果能支持name索引就更好了
// RowRecord.FieldNames,在初始化是传入SessionDataSet.column_name_lst是同一个内存引用,不会造成多少额外开销
RowRecord建议4:
public DateTime Timestamp => new DateTime(1970, 1, 1, 8, 0, 0).AddMilliseconds(timestamp);
// 增加日期类型的timestamp访问,timezone最好能够使用Session.zoneId
The text was updated successfully, but these errors were encountered: