private async Task LoadHardwares() { Hardwares.Clear(); var collection = await DbHandler.Instance.GetHardwareCollection(); Hardwares.AddRange(collection); }
public async void PrepareView(Supplier supplier) { await LoadHardwares(); Id = supplier.Id; Name = supplier.Name; Address = supplier.Address; ContactMobileNo = supplier.ContactMobileNo; ContactPersonName = supplier.ContactPersonName; CurrentHardware = Hardwares.Where(h => h.SerialNo == supplier.HardwareSerial).FirstOrDefault(); Comments = supplier.Comments; }
private void SetHardwares(object obj) { var type = obj.GetType(); var properties = type.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); foreach (var property in properties) { if (property.PropertyType.GetInterface(nameof(IHardware)) == null) { continue; } if (!Hardwares.ContainsKey(property.PropertyType)) { var message = $"Hardware type '{property.PropertyType.Name}' is not loaded for '{obj.GetType().Name}'"; Logger.Log(LogLevel.Fatal, message); throw new InvalidOperationException(message); } Logger.Log(LogLevel.Ludacris, $"Hardware '{Hardwares[property.PropertyType].GetType().FullName}' injected to property '{property.Name}' on object '{obj.GetType().FullName}'"); property.SetValue(obj, Hardwares[property.PropertyType]); } }