2009-09-02 2 views
1

Я новичок в структурной карте, но я хочу использовать ее на моем сайте asp.net для инъекции зависимостей может ли кто-нибудь предложить мне простой пример использования структурной карты для зависимости инъекциикак я могу использовать структуру map asp.net 3.5

ответ

2

вам нужно будет сделать что-то вроде этого: -

StructureMapConfiguration 
    .ForRequestedType<IResourceA>() 
    .TheDefaultIsConcreteType<ResourceB>() 
    .CacheBy(InstanceScope.Singleton); 

Это говорит StructureMap впрыснуть ResourceB, когда есть запрос ResourceA.

1

Structure Map

Вы можете настроить программно или с помощью файла конфигурации.

Programatical пример (есть и другие способы):

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, создание именованных экземпляров, которые настроены с определенными значениями конструктора/свойства. Я использую эту структуру и очень люблю ее.

Смежные вопросы