Skip to content
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

Closed
MatteoSwift opened this issue Apr 21, 2021 · 6 comments
Closed

关于Field和RowRecord的封装建议 #16

MatteoSwift opened this issue Apr 21, 2021 · 6 comments

Comments

@MatteoSwift
Copy link

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

@herowzz
Copy link

herowzz commented Apr 21, 2021

@eedalong

RowRecord里line:7,8

private long timestamp{get;set;}

private List field_lst{get;set;}

你把timestamp 和 field_lst弄成private别人都访问不了是要闹哪样
改成public吧,不然没法用

@eedalong
Copy link
Owner

@eedalong

RowRecord里line:7,8

private long timestamp{get;set;}

private List field_lst{get;set;}

你把timestamp 和 field_lst弄成private别人都访问不了是要闹哪样
改成public吧,不然没法用

好的,感谢建议!

@eedalong
Copy link
Owner

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

感谢建议,下一版本更新我们会上这部分改进!

This was referenced Apr 21, 2021
@eedalong
Copy link
Owner

@herowzz 欢迎加入微信用户群参与需求讨论与问题反馈!
image

@eedalong
Copy link
Owner

@eedalong

RowRecord里line:7,8

private long timestamp{get;set;}

private List field_lst{get;set;}

你把timestamp 和 field_lst弄成private别人都访问不了是要闹哪样
改成public吧,不然没法用

最新的Release版本中已经成为public~,感谢建议!

@eedalong
Copy link
Owner

新版本中包含上述的优化,就关闭这个issue了~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants