Ich würde das viel einfacher machen:
Delphi-Quellcode:
type
IData = interface
['{E9154DD9-A28E-4703-9DD8-5181A27869E2}']
procedure SetActualValue(const p_Component: Byte; const p_Value : double);
procedure SetCurrentActual(const p_Value: IActualValue);
procedure SetDefaultBehaviourMode(const p_Value: String);
end;
IReadOnlyData = interface
['{7F08C18E-0E6A-40F1-9DD9-AFDDA473FB8B}']
function GetActualValue(const p_Component: Byte): double;
function GetCurrentActual(): IActualValue;
function GetDefaultBehaviourMode(): String;
property DefaultBehaviourMode: String read GetDefaultBehaviourMode;
property CurrentActual: IActualValue read GetCurrentActual;
property ActualValue[const p_Component: Byte]: double read GetActualValue;
end;
Wer sich zum Schreiben extra das entsprechende Interface holen kann, kann auch einfach die Setter verwenden. Dann sieht man auch direkt, dass da geschrieben wird. Dann gibt es auch keine doppelten Deklarationen der Properties usw. und da die Properties in Interfaces auch nur syntaktischer Zucker sind, muss man die noch nicht einmal in der implementierenden Klasse deklarieren.
Dadurch ist der Anpassungsaufwand relativ niedrig.