Как и атрибут [Inject] из Ninject, что является эквивалентом в autofac? - PullRequest
0 голосов
/ 06 мая 2019

Я новичок в Autofac. Я знаю, что в Autofac мне нужно зарегистрировать эти свойства следующим образом: Property Injection . И я ищу что-то в Autofac, как атрибут [Inject] в Ninject. Как это:

[Inject]
public Interface Someproperty { get; set; }

Можно ли что-то подобное сделать с помощью Autofac? Любая помощь будет оценена!

1 Ответ

0 голосов
/ 06 мая 2019

Autofac не использует атрибуты. Просто сделайте общедоступными нужные свойства и убедитесь, что они имеют set, а Autofac сделает все остальное.

var builder = new ContainerBuilder();

// Register the type you want the properties wired up
builder.RegisterType<YourType>().PropertiesAutowired();

// You have to register the thing you want injected to - the value of the property
// and it has to be registered to expose the type of the property. So if the property
// being injected is type `Interface` then make sure you say that here.
builder.RegisterType<AClass>().As<Interface>();

Если вы действительно хотите контролировать, какие свойства вводятся с помощью атрибута - что я не рекомендую, потому что не очень хорошо, когда вещи, связанные с DI, переплетаются с вашей бизнес-логикой - есть рабочий пример в репо Autofac в виде модульного теста . В этом примере показано, как создать собственный настраиваемый атрибут и использовать настраиваемый селектор свойств Autofac для подключения только тех свойств, которые имеют настраиваемый атрибут.

...