原文怒删~~
我来提供第四点一点想法
程式码:https://ideone.com/XnMPPo
举例:
我有一个相机,但是噪声很多,因此我使用了average的方法做平均
因此我要设定average的值
我要在GUI中text设定值,但是它是string类别,你知道的
因此我需要转换程某个特定类别
但是这个特定类别会可能不一样,举例来说,可以是int, double, float, short...
每次都要做转换,就要 Int32.Parse(), double.Parse()... 然后程式码重写一遍
这样不是很麻烦吗?
因此就写了一个转换器宣告如下:
Setter<想转换的型态>
(来源TextBox, 取得目标物被设定后的值, 给予目标物欲设定的值,
报错关键字, 设定后的状态)
好处是该setter可以用在很多地方,像是:
如果是FPS,就会像
Setter<double>(
sender as TextBox,
new DoublePtrVoid(camera.FPS),
new VoidPtrDouble(camera.FPS),
"Fps",
cameraControlGUI.LabelFpsShow);
如果是拍照后的存盘路径:
Setter<string>(
sender as TextBox, new
StringPtrVoid(camera.SavePicPath),
new VoidPtrString(camera.SavePicPath),
"SavePath",
cameraControlGUI.LabelSavePathShow);
如果是取像平均:
Setter<int>(
sender as TextBox,
new IntPtrVoid(camera.Average),
new VoidPtrInt(camera.Average),
"Average",
cameraControlGUI.LabelAvgShow);
那你会问:输入格式不符怎么办?
1. 如果是使用者白目,应该给数字的给文字,那就会被转换器挡下来,然后报错
2. 如果是硬件限制呢? 像是一秒要拍个1000000000000000张照片?
阿你可以写在camera.FPS()那个Get/Set方法里面挡住他,然后报错
这也是为什么我会除了有输入值的delegate方法,还要有输出值的delegate
因为你不会知道设定有没有成功啊!!!
3. 为什么要有text的 "\r\n" ,因为我把他设定成多行,但只有你按下 "换行"
,我的程式才会鸟你,不然一律视为你 "正在输入",尚未输入完成。
一点建议,仅供参考
话说上班回屁话,会不会被开除阿 (抖抖抖)