Guest User

Untitled

a guest
Nov 20th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. <component id="Processors" service="System.Collections.Generic.IEnumerable`1[[Services.Interfaces.IProcessor, Services, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]" type="System.Collections.Generic.List`1[[Services.Interfaces.IProcessor, Services, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]">
  2. <parameters>
  3. <collection>
  4. <list>
  5. <item>${Processor1}</item>
  6. <item>${Processor2}</item>
  7. </list>
  8. </collection>
  9. <parameters>
  10. </component>
  11.  
  12. <component id="Processor1" service="Services.Interfaces.IProcessor" type="Services.TestProcessor, Services">
  13. <parameters>
  14. <example>LIVE</example>
  15. <id>Processor1</id>
  16. </parameters>
  17. </component>
  18.  
  19. <component id="Processor2" service="Services.Interfaces.IProcessor" type="Services.TestProcessor, Services">
  20. <parameters>
  21. <example>TEST</example>
  22. <id>Processor2</id>
  23. </parameters>
  24. </component>
  25.  
  26. public class InjectIdSubDependencyResolver : ISubDependencyResolver
  27. {
  28. private const string SpecialName = "id";
  29.  
  30. public bool CanResolve(
  31. CreationContext context, ISubDependencyResolver contextHandlerResolver,
  32. ComponentModel model, DependencyModel dependency)
  33. =>
  34. dependency.TargetType == typeof(string)
  35. &&
  36. dependency.DependencyKey == SpecialName
  37. &&
  38. dependency.Parameter?.ConfigValue == null;
  39.  
  40. public object Resolve(
  41. CreationContext context, ISubDependencyResolver contextHandlerResolver,
  42. ComponentModel model, DependencyModel dependency)
  43. => model.Name;
  44. }
  45.  
  46. IWindsorContainer wc = ...;
  47. wc.Kernel.Resolver.AddSubResolver(new InjectIdSubDependencyResolver());
  48.  
  49. <component id="Processor1" service="Services.Interfaces.IProcessor" type="Services.TestProcessor, Services">
  50. <parameters>
  51. <example>LIVE</example>
  52. </parameters>
  53. </component>
  54.  
  55. <component id="Processor2" service="Services.Interfaces.IProcessor" type="Services.TestProcessor, Services">
  56. <parameters>
  57. <example>TEST</example>
  58. </parameters>
  59. </component>
  60.  
  61. public class Processors {
  62. public Processors(IEnumerable<IProcessor> collection) { /**/ }
  63. }
Add Comment
Please, Sign In to add comment