就像 Ninject 中的 [Inject] 属性一样,autofac 中的等价物是什么?
Like [Inject] attribute from Ninject, what is the equivalent in autofac?
我是 Autofac 的新手。我知道使用 Autofac,我需要像这样注册这些属性:Property Injection。我正在 Autofac 中寻找一些东西,就像 Ninject 中的 [Inject] 属性一样。
像这样:
[Inject]
public Interface Someproperty { get; set; }
Autofac 可以做这样的事情吗?
任何帮助将不胜感激!
Autofac 不使用属性。只需制作您想要注入的属性 public 并确保它们具有 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 相关的东西与您的业务逻辑交织在一起并不是很好的做法 - there is a working example in the Autofac repo in the form of a unit test。该示例向您展示了如何创建自己的自定义属性并使用自定义 Autofac 属性 选择器仅连接具有自定义属性的属性。
我是 Autofac 的新手。我知道使用 Autofac,我需要像这样注册这些属性:Property Injection。我正在 Autofac 中寻找一些东西,就像 Ninject 中的 [Inject] 属性一样。 像这样:
[Inject]
public Interface Someproperty { get; set; }
Autofac 可以做这样的事情吗? 任何帮助将不胜感激!
Autofac 不使用属性。只需制作您想要注入的属性 public 并确保它们具有 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 相关的东西与您的业务逻辑交织在一起并不是很好的做法 - there is a working example in the Autofac repo in the form of a unit test。该示例向您展示了如何创建自己的自定义属性并使用自定义 Autofac 属性 选择器仅连接具有自定义属性的属性。