0
我有類似如下的對象層次:與導出接口使用StructureMap
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) { }
}
隨着當前註冊表的代碼中,「流」參數空。如何讓StructureMap注入上面的兩個實例?
我認爲這是唯一的解決方案。 – Euphoric 2011-04-20 13:36:51