static HowOutFactory() { _registry = new Dictionary <string, IHowOut>(); foreach (Type t in Assembly.GetExecutingAssembly().GetTypes()) { Type iface = t.GetInterface("Spider.Domain.HowOut.IHowOut"); if (iface != null) { IHowOut ho = (IHowOut)Activator.CreateInstance(t); _registry.Add(ho.ScorecardMatch, ho); } } }
private static void ProcessHowOut(HtmlNode cell, BatsmanInnings innings) { List <string> players = new List <string>(); HtmlNodeCollection playerNodes = cell.SelectNodes("./a"); if (playerNodes != null && playerNodes.Count > 0) { players.AddRange(cell.SelectNodes("./a").Select(FindPlayerId)); } IHowOut howOut = HowOutFactory.GetHowOut(GetTrimmedInnerText(cell.FirstChild)); innings.HowOut = howOut.HowOutType; innings.IsInnings = howOut.IsInnings; innings.IsOut = howOut.IsOut; if (howOut.HasFielder) { innings.FielderId = howOut.GetFielder(players); } if (howOut.HasBowler) { innings.BowlerId = howOut.GetBowler(players); } }