Я хотел бы иметь свой собственный атрибут внедрения, чтобы я не связывал свой код с конкретной платформой IOC. У меня есть собственный атрибут внедрения, который мой код использует для обозначения того, что свойство должно быть введено.
public class CustomInjectAttribute : Attribute {}
Фиктивный пример ниже ...
public class Robot : IRobot
{
[CustomInject]
public ILaser Zap { get; set; }
...
}
В Ninject вы можете настроить эвристику инъекций, чтобы найти этот атрибут, и вводить как;
public class NinjectInjectionHeuristic : NinjectComponent, IInjectionHeuristic, INinjectComponent, IDisposable
{
public new bool ShouldInject(MemberInfo member)
{
return member.IsDefined(typeof(CustomInjectAttribute), true);
}
}
и затем зарегистрировать эвристику в ядре.
Kernel.Components.Get<ISelector>().InjectionHeuristics.Add(new NinjectInjectionHeuristic());
Как мне добиться этого с помощью StructureMap. Я знаю, что StructureMap имеет свои собственные SetterProperties и атрибуты, но я ищу способ отделить его от Ninject в приведенном выше примере, как вы можете.