對我超級有用的型別dynamic

  • 1416
  • 0

摘要:對我超級的用的型別dynamic

自從公司升級到VS2010後,從來沒仔細研究的C#4.0的新功能

只是偶爾用用Action<>, Func, LINQ等東西。

最近因為專案的需求,相同的Application需要整合不同的硬體,

也就是說,程式UI,演算法都相同,只是硬體變了而以。

以前的作法是會先寫Interface或1個Base的UserControl,讓有近似作用的硬體去繼承

但雖然硬體的功能是近似的,但每家的SDK都不一樣,Function的叫用著實讓我很頭大。

今天想著想著,就想到C#4.0 dynamic這個動態型別,

試用的結果,非常合乎我的需求,真是太感動了。

廢話說多了,下面大概說明一下我的用法。

基底類別ucBase : UserControl

{

這個基底類別定義幾個抽像屬性

public abstract enDeviceType DeviceType{ get;}

}

硬體A、B都繼承自ucBase,並實作自己的UI,屬性,function並覆寫抽像屬性等等。

在初始化的地方

ucBase _HW;

如果使用者選擇的是A則_HW = new ucA();B的話_HW = new ucA()

在使用方面,使用dynamic定義物件

dynamic _Sensor;

public dynamic Sensor{ get { return _Sensor;}}

在類別初始化時可以利用覆寫的屬性去判別型別例如:

if(_HW.DeviceType == A)

  _Sensor = _HW as ucA;

else if(_HW.DeviceType == B)

 _Sensor = _HW as ucB;

 

以上大致把我的應用寫了一下。有點亂,不好意思了。

============ 以下是簽名檔 ============

一個小小螺絲釘。

第一次建立Blog,希望以後能慢慢充實它。

Howard