IAuto =
interface
// GUID
function GetPrice(): Integer;
function GetWeightInKg(): Integer;
// etc.
end;
TAudi =
class(TInterfacedObject, IAuto)
public
function GetPrice(): Integer;
function GetWeightInKg(): Integer;
end;
TMercedes =
class(TInterfacedObject, IAuto)
public
function GetPrice(): Integer;
function GetWeightInKg(): Integer;
end;
// Klassen im DI-Container registrieren
GlobalContainer.RegisterType<TAudi>().
Implements<IAuto>('
audi');
GlobalContainer.RegisterType<TAudi>().
Implements<IAuto>('
mercedes');
GlobalContainer.Build();
// So, so viel zur Vorarbeit...
var
CarName :
string;
begin
CarName := GetCarName();
Car := ServiceLocator.GetService<IAuto>(CarName);
edtCarPrice.Text := Car.GetPrice();
edtCarWeight.Text := Car.GetWeight();
end;
// So, nun ist nur noch die Frage, wie GetCarName aussieht...
fnuction TForm1.GetCarName():
string;
begin
Result := LowerCase(cmbbxCarSelection.Text);
// -- Oder du musst ein Mapping vornehmen --
if (cmbbxCarSelection.Text = '
Audi A3')
then
Result := '
audi'
else if (cmbbxCarSelection.Text = '
Mercedes A-Klasse')
then
Result := '
mercedes'
// etc...
end;