protected virtual UasParser GetUasParser() { if (Singleton<UasParser>.Instance == null) { //no database created if (String.IsNullOrEmpty(_config.UserAgentStringsPath)) return null; var filePath = _webHelper.MapPath(_config.UserAgentStringsPath); var uasParser = new UasParser(filePath); Singleton<UasParser>.Instance = uasParser; } return Singleton<UasParser>.Instance; }
protected virtual UasParser GetUasParser() { if (Singleton <UasParser> .Instance == null) { if (string.IsNullOrEmpty(_config.UserAgentStringsPath)) { return(null); } var filePath = _webHelper.MapPath(_config.UserAgentStringsPath); var uasParser = new UasParser(filePath); Singleton <UasParser> .Instance = uasParser; } return(Singleton <UasParser> .Instance); }
protected virtual UasParser GetUasParser() { if (Singleton<UasParser>.Instance == null) { //no database created if (String.IsNullOrEmpty("~/App_Data/uas_20140809-02.ini")) return null; var filePath = _webHelper.MapPath("~/App_Data/uas_20140809-02.ini"); var uasParser = new UasParser(filePath); Singleton<UasParser>.Instance = uasParser; } return Singleton<UasParser>.Instance; }
protected virtual UasParser GetUasParser() { if (Singleton <UasParser> .Instance == null) { //no database created if (String.IsNullOrEmpty("~/App_Data/uas_20140809-02.ini")) { return(null); } var filePath = _webHelper.MapPath("~/App_Data/uas_20140809-02.ini"); var uasParser = new UasParser(filePath); Singleton <UasParser> .Instance = uasParser; } return(Singleton <UasParser> .Instance); }
protected virtual UasParser GetUasParser() { if (Singleton <UasParser> .Instance == null) { //no database created if (String.IsNullOrEmpty(_config.UserAgentStringsPath)) { //UNDONE: maybe, throw an exception? return(null); } var filePath = _webHelper.MapPath(_config.UserAgentStringsPath); var uasParser = new UasParser(filePath); Singleton <UasParser> .Instance = uasParser; } return(Singleton <UasParser> .Instance); }
// ghi chú: Hàm này được viết khác với phiên bản của Nop. // Chúng ta hoàn toàn có thể sử dụng Autofac để duy trì 1 singleton cho UasParser. Cách dùng Singleton<UasParser>.Instance // có chăng chỉ giúp chạy nhanh hơn thôi ( hiện tại là thế, nếu có lợi ích gì hơn thì sẽ bổ sung sau ) // thay vì lock bằng MethodImpl ( sai ), ta sẽ lock bằng 1 static key protected static UasParser GetUasParser() { if (Singleton<UasParser>.Instance == null) { var config = EngineContext.Current.Resolve<NopConfig>(); // lấy ra đối tượng nopConfig singleton if (string.IsNullOrEmpty(config.UserAgentStringsPath)) return null; var webHelper = EngineContext.Current.Resolve<IWebHelper>(); lock (_lockUasParser) { if (Singleton<UasParser>.Instance == null) { string filePath = webHelper.MapPath(config.UserAgentStringsPath); var uasParser = new UasParser(filePath); Singleton<UasParser>.Instance = uasParser; } } } return Singleton<UasParser>.Instance; }