private void ValidateCache() { if (IsCacheValid) { return; } try { _cachedItems = _wrappedReader.GetPeople(); // We can use any DataReader we want. We just have to configure it in the App.xaml. We can e.g. start and then stop the ServiceReader to test the cache... _dataDateTime = DateTime.Now; } catch { _cachedItems = new List <Person>() { new Person() { GivenName = "No Data Available", FamilyName = string.Empty, Rating = 0, StartDate = DateTime.Today, } }; InvalidateCache(); } }
private async Task ValidateCache() { if (IsCacheValid) { return; } try { _cachedItems = await _wrappedReader.GetPeople(); _dataDateTime = DateTime.Now; } catch { _cachedItems = new List <Person>() { new Person() { GivenName = "No Data Available", FamilyName = string.Empty, Rating = 0, StartDate = DateTime.Today, } }; InvalidateCache(); } }
private static void ShowPeople(RepositoryType repositoryType) { IPersonReader repository = RepositoryFactory.GetRepository(repositoryType); IEnumerable <Person> people = repository.GetPeople(); foreach (var person in people) { Console.WriteLine(GetPersonInformation(person)); } }
public async Task <IReadOnlyCollection <Person> > GetPeople() { try { return(await _wrappedReader.GetPeople()); } catch (Exception ex) { _logger?.LogException(ex); throw; } }
private void FetchData(IPersonReader reader) { ClearListBox(); var people = reader.GetPeople(); foreach (var person in people) { PersonListBox.Items.Add(person); } ShowReaderType(reader); }
public async Task <IEnumerable <Person> > GetPeople() { try { return(await _wrappedReader.GetPeople()); } catch (Exception ex) { await _logger?.LogException(ex); throw; } }
private void FetchButton_Click(object sender, RoutedEventArgs e) { ClearListBox(); IPersonReader repository = RepositoryFactory.GetRepository(); var people = repository.GetPeople(); foreach (var person in people) { PersonListBox.Items.Add(person); } ShowRepositoryType(repository); }
private void PopulateData(string repositoryType) { ClearListBox(); IPersonReader repository = RepositoryFactory.GetRepository(repositoryType); var people = repository.GetPeople(); foreach (var person in people) { PersonListBox.Items.Add(person); } ShowRepositoryType(repository); }
private void FetchData(string readerType) { ClearListBox(); IPersonReader reader = ReaderFactory.GetReader(readerType); var people = reader.GetPeople(); foreach (var person in people) { PersonListBox.Items.Add(person); } ShowReaderType(reader); }
static void Main(string[] args) { //foreach accepts IEnumerable so it is maintainable if something changes //So declaring the variable as IEnumerable if we change our data structure in the future, the code here stays the same Console.WriteLine("Without interface example"); var personRepo = new PersonRepository(); IEnumerable <Person> persons = personRepo.GetPeople(); foreach (var person in persons) { Console.WriteLine(person.Name); } Console.WriteLine("--------------"); //Below we call the one service we created using the interface //If we ever want to use a new service, we create a new service repo implementing the interface and we change the code only below in the declaration //That's the beauty of interfaces //IPersonRepository list_service = new PersonRepository(); //IPersonRepository list_service = RepositoryFactory.GetRepository("Person"); Console.WriteLine("Interface and factory method example"); IPersonReader list_service = RepositoryFactory.GetRepository("Person"); //var personToAdd = new Person { Id = 3, Name = "Mary" }; //list_service.AddPerson(personToAdd); IEnumerable <Person> list_service_items = list_service.GetPeople(); foreach (var person in list_service_items) { Console.WriteLine(person.Name); } Console.WriteLine("--------------"); //Note : We have to be careful and not use a lot of interfaces because there is the danger that the code will become more complex //Go to implentation is weird when using interfaces. Debugging and step into is a solution that take us to the correct implementation //Dependency Injection example Console.WriteLine("Dependency injection example"); //If we ever change the service we only modify the following line and we are done IPersonReader depend_inj_instance = new PersonRepository(); var generalRepo = new GeneralDIrepository(depend_inj_instance); IEnumerable <Person> list_service_items2 = generalRepo.GetAll(); foreach (var person in list_service_items2) { Console.WriteLine(person.Name); } }
private void Populate(string repository) { ClearListBox(); //IPersonRepository personRepository = RepositoryFactory.GetRepository(repository); // 5. Designing Effective Interfaces - Interface Segregation Principle IPersonReader personRepository = RepositoryFactory.GetRepository(repository); var persons = personRepository.GetPeople(); foreach (var person in persons) { PersonListBox.Items.Add(person); } ShowRepositoryType(personRepository); }
public IReadOnlyCollection <Person> GetPeople() { _retryCount++; try { var people = _wrappedReader.GetPeople(); _retryCount = 0; return(people); } catch (Exception) { if (_retryCount >= 3) { throw; } Thread.Sleep(_retryDelay); return(this.GetPeople()); } }
private void ValidateCache() { if (_cachedItems == null || !IsCacheValid) { try { _cachedItems = _wrappedReader.GetPeople(); _dataDateTime = DateTime.Now; } catch { _cachedItems = new List <Person>() { new Person() { GivenName = "No Data Available", FamilyName = string.Empty, Rating = 0, StartDate = DateTime.Today }, }; } } }
public async Task <IEnumerable <Person> > GetPeople() { _retryCount++; try { var people = await _wrappedReader.GetPeople(); _retryCount = 0; return(people); } catch (Exception) { if (_retryCount >= 3) { throw; } await Task.Delay(_retryDelay); return(await this.GetPeople()); } }
static void FetchData() { WriteLine(); WriteLine("================="); IPersonReader reader = ReaderFactory.GetReader(); var people = reader.GetPeople(); foreach (var person in people) { WriteLine(person.ToConsoleRecord()); } WriteLine("================="); ShowReaderType(reader); WriteLine("================="); WriteLine(); WriteLine("Press any key to continue..."); ReadKey(); }
public void RefreshPeople() { People = DataReader.GetPeople(); }
public void FetchData() { People = repository.GetPeople(); }
public async Task RefreshPeople() { People = await Reader.GetPeople(); }
public IEnumerable <Person> GetPeople() { return(DataReader.GetPeople()); }
public async Task RefreshPeople() { People = await Repository.GetPeople(); }
public IEnumerable <Person> GetAll() { return(personReader.GetPeople()); }