To implement attribute-based dependency injection in a C# console application using Autofac, and to specify that this attribute should inject an object with the key “xxx”, how should I do it?
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class AutowiredAttribute : Attribute
{
}
public static class AutowiredPropertyExtend
{
public static IRegistrationBuilder<TLimit, TActivatorData, TRegistrationStyle> AttributePropertiesAutowired<TLimit, TActivatorData, TRegistrationStyle>(
this IRegistrationBuilder<TLimit, TActivatorData, TRegistrationStyle> builder)
{
return builder.PropertiesAutowired(new AutowiredPropertySelector());
}
}
public class AutowiredPropertySelector : IPropertySelector
{
public bool InjectProperty(PropertyInfo propertyInfo, object instance)
{
return propertyInfo.CustomAttributes.Any(s => s.AttributeType == typeof(AutowiredAttribute));
}
}
user25631590 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.