Может быть, вы ссылаетесь на инъекцию зависимостей? Где при использовании DI Framework (например, Ninject или Unity) вы можете определить экземпляр по умолчанию для каждого интерфейса, а затем использовать его следующим образом:
(при условии, что у вас есть IWeapon
интерфейс и Sword
реализует его)
IKernel kernel = new StandardKernel();
kernel.Bind<IWeapon>().To<Sword>();
var weapon = kernel.Get<IWeapon>();
Но Ninject (и большинство других IoC-сред) может делать более умные вещи, например: скажем, у нас есть класс Warrior
, который принимает IWeapon в качестве параметра в своем конструкторе. Мы можем получить экземпляр Warrior
от Ninject:
var warrior = kernel.Get<Warrior>();
Ninject передаст указанную реализацию IWeapon методу конструктора Warrior
и вернет новый экземпляр.
Кроме этого, я не знаю ни одной языковой функции, которая бы позволяла такое поведение.