Вы могли бы записать StringToInnerClass
, который вы имели в своем коде, как метод расширения, который использует отражение, чтобы получить нужный объект настроек конкретного устройства, хотя в этом случае это было бы излишним.
Цикл был хорошей идеей. Вы можете расширить массив имен устройств до массива пар имя / функция для достижения вашей цели, предполагая, что d1
, d2
и т. Д. Относятся к одному типу.
Начните с создания метаданных для устройств: они состоят из имени устройства и функции поиска настроек. Я использовал здесь кортежи, чтобы избежать определения типа на данный момент, но вы должны подумать об этом в конце концов.
Поскольку вы не ответили на мой вопрос об именах типов, предполагается, что repo.Android.Settings
имеет тип AndroidSettings
. d1
и т. Д., По-видимому, относятся к типу TestRepositoryFolders
в соответствии с вашими правками. Измените их на фактические типы по мере необходимости, чтобы заставить его работать.
List<(string Name, Func<AndroidSettings, TestRepositoryFolders> GetDeviceSettings)> device_meta =
new List<(string, Func<AndroidSettings, TestRepositoryFolders>)>()
{
(d1_name, s => s.d1),
(d2_name, s => s.d2),
(d3_name, s => s.d3)
};
Затем измените цикл, чтобы использовать свойство Name
для проверки имени устройства и свойство GetDeviceSettings
для получения настроек для этого устройства. Вы можете выйти из цикла, как только получите совпадение.
for (int i_device = 0; i_device < device_meta.Count; i_device++)
{
if (device_name == device_meta[i_device].Name)
{
device_stats.Add("Device Name", device_meta[i_device].Name));
System.Diagnostics.Debug.WriteLine(device_stats["Device Name"]);
var deviceSettings = device_meta[i_device].GetDeviceSettings();
device_stats.Add("Status", deviceSettings.deviceStatus.TextValue);
System.Diagnostics.Debug.WriteLine("Status:\t" + device_stats["Status"]);
deviceSettings.screen.Touch();
break;
}
}
Вы можете встретить другие места, где вам нужно перебрать устройства и выполнить какую-либо другую операцию. Это будет время (если не раньше) преобразовать кортежи в тип вашего собственного создания и включить новые метаданные, необходимые для выполнения этой операции.