Advertisement
Guest User

Untitled

a guest
Aug 8th, 2016
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.91 KB | None | 0 0
  1. private void MapStrategies()
  2. {
  3.     var attributes = Assembly.GetExecutingAssembly()
  4.         .GetTypes()
  5.         .Where(t => t.IsClass
  6.             && t != typeof(DisposableAttribute)
  7.             && typeof(DisposableAttribute).IsAssignableFrom(t));
  8.  
  9.     foreach (var attribute in attributes)
  10.     {
  11.         string attributeName = attribute.Name;
  12.         string strategyName = attributeName.Substring(0, attributeName.IndexOf("Attribute"));
  13.  
  14.         IGarbageDisposalStrategy strategy = GetStrategy(strategyName);
  15.         this.garbageProcessor.StrategyHolder.AddStrategy(attribute, strategy);
  16.     }
  17. }
  18.  
  19. private IGarbageDisposalStrategy GetStrategy(string strategyName)
  20. {
  21.     const string StrategySuffix = "Strategy";
  22.  
  23.     var strategyNamespace = typeof(GarbageDisposalStrategy).Namespace;
  24.     var strategyType = Type.GetType($"{strategyNamespace}.{strategyName + StrategySuffix}");
  25.  
  26.     var strategy = (IGarbageDisposalStrategy)Activator.CreateInstance(strategyType);
  27.     return strategy;
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement