Получите логическое значение из свойства вложенных классов.C#

Место общения программистов C#
Anonymous
Получите логическое значение из свойства вложенных классов.

Сообщение Anonymous »

Я пытаюсь использовать метод GetValue() PropertyInfo, но кажется, что он не работает.

Код: Выделить всё

public bool IsDeviceOperable(ServiceType type, bool isServer, string domain)
{
string settingsFileContent = _fileReader.Read(_filePathProvider.GetSettingsFilePath());

var settings = _jsonDeserializer.Deserialize(settingsFileContent);
var settingsName = GetSettingsNameByType(type);

string deviceType = GetDeviceType(isServer);

var info = settings.GetType().GetProperty(domain.ToUpper())
.PropertyType.GetProperty(settingsName)
.PropertyType.GetProperty(deviceType);

bool value = (bool)info.GetValue(settings, null);

return value;
}
Выдает

System.Reflection.TargetException: «Объект не соответствует целевому типу».

Файл моих настроек выглядит следующим образом:

Код: Выделить всё

public class Settings
{
public FirstDomain First { get; set; }
public SecondDomain Second { get; set; }
...
}
Классы предметной области выглядят следующим образом:

Код: Выделить всё

public class FirstDomain
{
public Settings1 firstSettings { get; set; }
public Settings2 secondSettings { get; set; }
...
}

public class SecondDomain
{
public Settings1 firstSettings { get; set; }
public Settings2 secondSettings { get; set; }
...
}
Классы настроек выглядят следующим образом:

Код: Выделить всё

public class Settings1
{
public bool RunOnClient { get; set; }
public bool RunOnServer { get; set; }
}

public class Settings2
{
public bool RunOnClient { get; set; }
public bool RunOnServer { get; set; }
}
Есть причина, по которой Первый Домен Второй Домен, а также настройки отличаются друг от друга, просто для простоты понимания я их переименовал.

Подробнее здесь: https://stackoverflow.com/questions/731 ... s-property

Вернуться в «C#»