Я новичок в карте структуры, но хочу использовать ее на своем сайте asp.net для инъекции зависимостей, может ли кто-нибудь предложить мне простой пример использования карты структуры для инъекции зависимостей
как я могу использовать карту структуры asp.net 3.5
Ответы (2)
вам нужно будет сделать что-то вроде этого: -
StructureMapConfiguration
.ForRequestedType<IResourceA>()
.TheDefaultIsConcreteType<ResourceB>()
.CacheBy(InstanceScope.Singleton);
Это указывает StructureMap внедрить ResourceB при запросе ResourceA.
Вы можете настроить программно или через файл конфигурации.
Программный пример (есть и другие способы):
StructureMap.StructureMapConfiguration.ForRequestedType<ISomething>().TheDefaultIsConcreteType<ConcreteSomething>();
то вы можете получить экземпляр настроенного типа, используя такой код:
//The concrete type will be ConcreteSomething
ISomething instance = ObjectFactory.GetInstance<ISomething>();
Вы можете сделать это в конфигурационном файле:
<StructureMap MementoStyle="Attribute">
<DefaultInstance PluginType="Blah.ISomething, Blah.SomethingDLL" PluggedType="Blah.Concrete.ConcreteSomething,Blah.ConcreteDLL"/>
</StructureMap>
а в основном методе или Global.asax вы можете установить эту конфигурацию, сказав:
StructureMap.ObjectFactory.Initialize(x => { x.PullConfigurationFromAppConfig = true; });
и используйте его так же, как указано выше:
ISomething instance = ObjectFactory.GetInstance<ISomething>();
Если в конкретном классе есть конструктор, в который нужно внедрить экземпляры, и они у вас настроены, конкретные типы будут внедрены фреймворком.
Существуют способы передачи параметров конструкторам, работы с типами Gereric, создания именованных экземпляров, которые настроены с определенными значениями конструктора / свойства. Я использую этот фреймворк, и он мне очень нравится.