PhasedEvaluated TFrom, TTo applies transforms to the values from an underlying
Phased T
in order to obtain new values.
System Object ElecNetKit.NetworkModelling.Phasing PhasedEvaluated TFrom, TTo Namespace: ElecNetKit.NetworkModelling.PhasingAssembly: ElecNetKit.Core (in ElecNetKit.Core.dll) Version: 1.1.4771.27370 (1.1.0.0)
public class PhasedEvaluated<TFrom, TTo> : Phased<TTo>,
IDictionary<int, TTo>, ICollection<KeyValuePair<int, TTo>>, IEnumerable<KeyValuePair<int, TTo>>,
IEnumerable
where TFrom : struct, new()
where TTo : struct, new()
public class PhasedEvaluated<TFrom, TTo> : Phased<TTo>,
IDictionary<int, TTo>, ICollection<KeyValuePair<int, TTo>>, IEnumerable<KeyValuePair<int, TTo>>,
IEnumerable
where TFrom : struct, new()
where TTo : struct, new()
Public Class PhasedEvaluated(Of TFrom As {Structure, New}, TTo As {Structure, New}) _
Implements Phased(Of TTo), IDictionary(Of Integer, TTo), _
ICollection(Of KeyValuePair(Of Integer, TTo)), IEnumerable(Of KeyValuePair(Of Integer, TTo)), _
IEnumerable
Public Class PhasedEvaluated(Of TFrom As {Structure, New}, TTo As {Structure, New}) _
Implements Phased(Of TTo), IDictionary(Of Integer, TTo), _
ICollection(Of KeyValuePair(Of Integer, TTo)), IEnumerable(Of KeyValuePair(Of Integer, TTo)), _
IEnumerable
generic<typename TFrom, typename TTo>
where TFrom : value class, gcnew()
where TTo : value class, gcnew()
public ref class PhasedEvaluated : Phased<TTo>,
IDictionary<int, TTo>, ICollection<KeyValuePair<int, TTo>>, IEnumerable<KeyValuePair<int, TTo>>,
IEnumerable
generic<typename TFrom, typename TTo>
where TFrom : value class, gcnew()
where TTo : value class, gcnew()
public ref class PhasedEvaluated : Phased<TTo>,
IDictionary<int, TTo>, ICollection<KeyValuePair<int, TTo>>, IEnumerable<KeyValuePair<int, TTo>>,
IEnumerable
- TFrom
- The type of the base phased object.
- TTo
- The type of the values of this phased object.
PhasedEvaluated TFrom, TTo is useful for providing phased convenience properties to classes when there
is no difference in underlying data.
Consider the two properties of electrical network buses: voltage, and per-unit voltage. There is no
point in storing these values twice in a network element model: The per-unit voltage would be redundant,
as it is defined as (Voltage/BaseVoltage), and both of these values are stored in the network element.
In such cases, it is best to use a
PhasedEvaluated TFrom, TTo for implementation:
public class Bus
{
public Phased<Complex> VoltagePhased { private set; get; }
public double BaseVoltage { set; get; }
public Phased<Complex> VoltagePUPhased { private set; get; }
public Bus()
{
VoltagePUPhased = new PhasedEvaluated<Complex,Complex>(
from => from / this.BaseVoltage,
to => to * this.BaseVoltage,
VoltagePhased
);
}
}
public class Bus
{
public Phased<Complex> VoltagePhased { private set; get; }
public double BaseVoltage { set; get; }
public Phased<Complex> VoltagePUPhased { private set; get; }
public Bus() // or OnDeserializationCallback, whatever
{
VoltagePUPhased = new PhasedEvaluated<Complex,Complex>(
from => from / this.BaseVoltage, //get
to => to * this.BaseVoltage, //set
VoltagePhased
);
}
}