using System;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
var engine = new EngineA();
var car = new Car( engine );
car.Go();
}
public interface IEngine
{
void Start();
}
public class EngineA : IEngine
{
public void Start()
{
}
}
public class Car
{
private IEngine engine;
public Car( IEngine engine )
{
this.engine = engine;
}
public void Go()
{
this.engine.Start();
}
}
}
}
dXNpbmcgU3lzdGVtOwoKbmFtZXNwYWNlIENvbnNvbGVBcHAKewogICAgY2xhc3MgUHJvZ3JhbQogICAgewogICAgICAgIHN0YXRpYyB2b2lkIE1haW4oc3RyaW5nW10gYXJncykKICAgICAgICB7CiAgICAgICAgICAgIHZhciBlbmdpbmUgPSBuZXcgRW5naW5lQSgpOwogICAgICAgICAgICB2YXIgY2FyID0gbmV3IENhciggZW5naW5lICk7CiAgICAgICAgICAgIGNhci5HbygpOwogICAgICAgIH0KCgogICAgICAgIHB1YmxpYyBpbnRlcmZhY2UgSUVuZ2luZQogICAgICAgIHsKICAgICAgICAgICAgdm9pZCBTdGFydCgpOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIGNsYXNzIEVuZ2luZUEgOiBJRW5naW5lCiAgICAgICAgewogICAgICAgICAgICBwdWJsaWMgdm9pZCBTdGFydCgpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcHVibGljIGNsYXNzIENhcgogICAgICAgIHsKICAgICAgICAgICAgcHJpdmF0ZSBJRW5naW5lIGVuZ2luZTsKICAgICAgICAgICAgcHVibGljIENhciggSUVuZ2luZSBlbmdpbmUgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0aGlzLmVuZ2luZSA9IGVuZ2luZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVibGljIHZvaWQgR28oKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0aGlzLmVuZ2luZS5TdGFydCgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cg==