我一直在研究一些電氣網絡仿真軟件(ElecNetKit)。在電氣網絡中,有時使用單相模型有時很方便,有時使用三相模型。在一個班級成員中表示多個值
因此,我想是能夠代表電網元件之一:
class Bus
{
public Complex Voltage {set; get;} //single phase property
}
但同時以一種方式,使得用戶可以調用Bus.Voltage.Phases[x]
,並期望一個Complex
對於任何有效整數x
。
Bus.Voltage
屬性應該映射到Bus.Voltage.Phases[1]
當作爲Complex
對待。
我有兩個問題在這裏:
- 這是違反任何OOP原則是什麼?我有一種感覺,它可能是。
- 有沒有一種方便的方式來表示這在C#中?
在代表性方面,我嘗試過:
- 類
Phased<T> : T
,但這是與打字系統不兼容,並 - 類
Phased<T>
與通用轉換器輸入T
,但轉換器仍然需要調用。
我知道,我可以簡單地使用類似:
public Dictionary<int,Complex> VoltagePhases {private set; get;}
public Complex Voltage {
set {VoltagePhases[1] = value;}
get {return VoltagePhases[1];}
}
,但有很多重複的,一旦你開始爲多個屬性做到這一點,在多個類別。
只是要小心隱含的運營商,他們一般是,即使他們可能使你的代碼看起來有點簡單,一個壞主意。 – lahsrah