private void cboCategories_SelectedIndexChanged(object sender, EventArgs e) { var key = ((KeyValuePair <int, string>)cboCategories.SelectedItem).Key; Assembly assembly; switch (key) { case 1: assembly = Assembly.GetAssembly(typeof(AccountRepository)); _displayClasses = assembly.GetTypes().Where(t => t.Namespace != null && t.IsClass && t.IsPublic).ToList(); if (_displayClasses.Any()) { var uw = new DAL.DbEntity.UnitOfWork(); _constorInfoUniversal = new ConstructorInfo { ConstorParamType = new[] { uw.GetContext().GetType() }, ConstorParams = new[] { uw.GetContext() } }; } _bFlags = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public; break; case 2: assembly = Assembly.GetAssembly(typeof(AccountRepositorySealed)); //TekTak.iLoop.Sealed _displayClasses = assembly.GetTypes().Where(t => t.Namespace != null && t.Namespace.StartsWith("TekTak.iLoop.Sealed", StringComparison.OrdinalIgnoreCase) && t.IsClass && t.IsPublic).ToList(); _constorInfoUniversal = _constorInfo; _bFlags = BindingFlags.FlattenHierarchy | BindingFlags.Instance | BindingFlags.Public; break; case 3: assembly = Assembly.GetAssembly(typeof(AccountService)); _displayClasses = assembly.GetTypes().Where(t => t.Namespace != null && t.IsClass && t.IsPublic).ToList(); if (_displayClasses.Any()) { var uw = new DAL.DbEntity.UnitOfWork(); var uow = new TekTak.iLoop.UOW.UnitOfWork(); _constorInfoUniversal = new ConstructorInfo { ConstorParamType = new[] { uw.GetType(), uow.GetType() }, ConstorParams = new object[] { uw, uow } }; } _bFlags = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public; break; } _cboItems = new Dictionary <string, string>(); foreach (var type in _displayClasses) { var display = type.Name.IndexOf("Repo", StringComparison.Ordinal) > 0 ? type.Name.Substring(0, type.Name.IndexOf("Repo", StringComparison.Ordinal)) : type.Name; display = display.EndsWith("Service", StringComparison.OrdinalIgnoreCase) ? display.Substring(0, display.LastIndexOf("Service", StringComparison.OrdinalIgnoreCase)) : display; _cboItems.Add(type.FullName, display.AddSpaceBeforeCapitalLetters()); } cboClasses.DataSource = new BindingSource(_cboItems, null); cboClasses.DisplayMember = "Value"; cboClasses.ValueMember = "Key"; cboClasses.SelectedIndex = 0; }
private void cboCategories_SelectedIndexChanged(object sender, EventArgs e) { var key = ((KeyValuePair<int, string>)cboCategories.SelectedItem).Key; Assembly assembly; switch (key) { case 1: assembly = Assembly.GetAssembly(typeof(AccountRepository)); _displayClasses = assembly.GetTypes().Where(t => t.Namespace != null && t.IsClass && t.IsPublic).ToList(); if (_displayClasses.Any()) { var uw = new DAL.DbEntity.UnitOfWork(); _constorInfoUniversal = new ConstructorInfo { ConstorParamType = new[] { uw.GetContext().GetType() }, ConstorParams = new[] { uw.GetContext() } }; } _bFlags = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public; break; case 2: assembly = Assembly.GetAssembly(typeof(AccountRepositorySealed)); //TekTak.iLoop.Sealed _displayClasses = assembly.GetTypes().Where(t => t.Namespace != null && t.Namespace.StartsWith("TekTak.iLoop.Sealed", StringComparison.OrdinalIgnoreCase) && t.IsClass && t.IsPublic).ToList(); _constorInfoUniversal = _constorInfo; _bFlags = BindingFlags.FlattenHierarchy | BindingFlags.Instance | BindingFlags.Public; break; case 3: assembly = Assembly.GetAssembly(typeof(AccountService)); _displayClasses = assembly.GetTypes().Where(t => t.Namespace != null && t.IsClass && t.IsPublic).ToList(); if (_displayClasses.Any()) { var uw = new DAL.DbEntity.UnitOfWork(); var uow = new TekTak.iLoop.UOW.UnitOfWork(); _constorInfoUniversal = new ConstructorInfo { ConstorParamType = new[] { uw.GetType(), uow.GetType() }, ConstorParams = new object[] { uw, uow } }; } _bFlags = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public; break; } _cboItems = new Dictionary<string, string>(); foreach (var type in _displayClasses) { var display = type.Name.IndexOf("Repo", StringComparison.Ordinal) > 0 ? type.Name.Substring(0, type.Name.IndexOf("Repo", StringComparison.Ordinal)) : type.Name; display = display.EndsWith("Service", StringComparison.OrdinalIgnoreCase) ? display.Substring(0, display.LastIndexOf("Service", StringComparison.OrdinalIgnoreCase)) : display; _cboItems.Add(type.FullName, display.AddSpaceBeforeCapitalLetters()); } cboClasses.DataSource = new BindingSource(_cboItems, null); cboClasses.DisplayMember = "Value"; cboClasses.ValueMember = "Key"; cboClasses.SelectedIndex = 0; }