难点在于,每种数据类型的类型转换写法不一样。比如bool类型是bool.TryParse,int类型是int.TryParse,怎么把这部分逻辑抽象出来呢?
一种办法是用C#本身的类型转换:
(T) Convert.ChangeType(rawConfigValue, typeof (T))
另一种是把类型转换的逻辑作为委托加在方法的参数里,这样就用lambda表达式去传,我比较偏向这种方法,因为方法的调用者能非常清晰的知道“该干嘛,该怎么干”。
这时候,如果因为非法类型转换爆,是得让调用者知道的。所以我偏向把TryParse改为Parse,死就要死个明白。
public T GetConfiguration<T>(Func<string, T>parseFunc, string key)
{
try
{
T val = default(T)
string rawConfigValue = ConfigurationManager.AppSettings[key]
if (!string.IsNullOrEmpty(rawConfigValue))
{
return parseFunc(rawConfigValue)
}
return val
}
catch (ConfigurationException ce)
{
// error handling logic
return default(T)
}
}
一看标记, 是否有in/out字样, in表示输入, out表示输出, 当然图上是没有的 二看设备, 如果没有标记, 只要看设备类型就可以知道是输入还是输出了, 比如, 笔记本电脑的HDMI都是输出口, 电视机的HDMI都是输入口DMX512协议最先是由USITT(美国剧院技术协会)发展成为从控制台用标准数字接口控制调光器的方式。目前,室外照明所使用的各种LED灯条、点光源、电脑灯、像素灯、护栏管等各种灯光设备,全面支持DMX512协议的信号传输方式,已实现调光控制的数字化。Art-Net是一种基于TCP/IP协议栈的以太网协议,目的在于使用标准的网络技术允许在广域内传递大量DMX512数据。在现有的室外照明工程中,灯光控制器多采用SD卡播放灯光效果,市面上的灯光控制器不能被远程控制,无法播放实时编排的灯光效果。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)