public void GetListOfAvailableModes(IModeable sameDevice) { Type t = sameDevice.GetType(); PropertyInfo[] pI = t.GetProperties(); Type t2 = t; foreach (PropertyInfo p in pI) { if ((Convert.ToString(p.PropertyType)).ToLower().Contains("mode")) { t2 = p.PropertyType; } } if (t2 != t) { FieldInfo[] t2Fields = t2.GetFields(); Console.WriteLine("list of available modes: "); foreach (MemberInfo m in t2Fields) { if (!m.Name.Contains("__")) { Console.WriteLine(m.Name); } } } }
public void ControlWithModeable(IModeable sameDevice) { Console.WriteLine("Mode setting."); GetListOfAvailableModes(sameDevice); string settingMode = Console.ReadLine().ToLower(); try { sameDevice.SetMode(settingMode); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.Source); } if (actWithDevice != null) { actWithDevice.Invoke(sameDevice.SetMode(settingMode)); } }