У меня есть иерархия объектов, подобная следующей:
interface IVideoStream { }
abstract class VideoStream : IVideoStream { }
interface IVideoStreamTypeA : IVideoStream { /* Specific for type A */ }
interface IVideoStreamTypeB : IVideoStream { /* Specific for type B */ }
class VideoStreamTypeA : IVideoStreamTypeA { }
class VideoStreamTypeB : IVideoStreamTypeB { }
Должен быть один экземпляр VideoStreamTypeA и VideoStreamTypeB, поскольку они обертывают некоторые ресурсы. Некоторые классы напрямую используют IVideoStreamTypeA или IVideoStreamTypeB, а некоторые классы принимают список IVideoStream.
Код регистра выглядит следующим образом:
class MyRegistry: Registry
{
public MyRegistry()
{
For<IVideoStreamTypeA>().Use<VideoStreamTypeA>()
.Ctor<>() // Specific initialization
For<IVideoStreamTypeB>().Use<VideoStreamTypeB>()
.Ctor<>() // Specific initialization
For<IVideoStreamTypeA>().Singleton();
For<IVideoStreamTypeB>().Singleton();
}
}
Наконец, есть несколько классов, которые принимают список IVideoStream:
class MyClass
{
public MyClass(IEnumerable<IVideoStream> streams) { }
}
С текущим кодом реестра параметр «streams» пуст. Как мне получить StructureMap для добавления двух экземпляров сверху?