class Object with Dependency Injection
Ali Çehreli
acehreli at yahoo.com
Sun Jun 18 16:58:15 UTC 2023
On 6/18/23 07:37, Salih Dincer wrote:
> auto truck = new Truck;
> auto ship = new Ship;
>
> auto services = [ truck, ship ];
The problem is with the deduced type of 'services'. I don't know the
mechanism behind it but the common type of 'truck' and 'ship' are
deduced to be Object. Apparently, their interfaces don't take part in
that decision. I don't know why.
One solution is to help the compiler by casting them to your desired
interface:
auto services = [ cast(ITransport)truck, cast(ITransport)ship ];
Or you can put the casts inside a function that could hide the
complexity below:
import std.algorithm;
import std.range;
auto services = [ truck, ship ].map!(s => cast(ITransport)s).array;
Ali
More information about the Digitalmars-d-learn
mailing list