私はいくつかの電気回路網シミュレーション ソフトウェア ( ElecNetKit ) に取り組んできました。電気回路網では、単相モデルで作業する方が便利な場合もあれば、三相モデルで作業する方が便利な場合もあります。
そのため、電気ネットワーク要素の 1 つを次のように表現できるようにしたいと考えています。
class Bus
{
public Complex Voltage {set; get;} //single phase property
}
しかし同時に、ユーザーが を呼び出して、有効な整数に対してBus.Voltage.Phases[x]
a を期待できるような方法で。Complex
x
として扱われる場合、プロパティBus.Voltage
は にマップする必要があります。Bus.Voltage.Phases[1]
Complex
ここで 2 つの質問があります。
- これは OOP の原則に違反していますか? ありそうな予感。
- これを C# で表現する便利な方法はありますか?
表現に関して、私は試しました:
- class
Phased<T> : T
ですが、これは型付けシステムと互換性がありません。 Phased<T>
type への汎用コンバーターを持つクラスT
ですが、コンバーターを呼び出す必要があります。
次のようなものを簡単に使用できることを認識しています。
public Dictionary<int,Complex> VoltagePhases {private set; get;}
public Complex Voltage {
set {VoltagePhases[1] = value;}
get {return VoltagePhases[1];}
}
ただし、複数のクラスにわたって複数のプロパティに対してこれを実行し始めると、多くの繰り返しがあります。