Я занят игрой с методами настройки внутри CLI-приложения C #, пытаясь переместить некоторые из моих жестко заданных настроек в более долгосрочное управляемое местоположение (config.json).
DeviceTypes [0].ModelCheck [0] .Check возвращает значение NULL, DeviceTypes [0] .Vendor и другие исправны, и даже кажется, что значение ModelCheck имеет правильную длину массива из конфигурации.
Кажется, что вложенный массив заканчиваетсяне заполнены данными, и я не уверен, почему.
Config.cs
public class Config
{
private IConfigurationRoot config;
private DeviceType[] _deviceTypes;
public DeviceType[] DeviceTypes { get => _deviceTypes; }
private Settings _settings;
public Settings Settings { get => _settings; }
public Config()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("Config.json", optional: false, reloadOnChange: true);
config = builder.Build();
_deviceTypes = config.GetSection("Devices").Get<DeviceType[]>();
_settings = config.GetSection("Settings").Get<Settings>();
}
}
public class DeviceType
{
public string Vendor { get; set; }
public string Type { get; set; }
public string ObjectOID { get; set; }
public ModelCheck[] ModelChecks { get; set; }
}
public class ModelCheck
{
public string Check;
public string Regex;
public string Example;
}
public class Settings
{
public string[] SubnetPrefix { get; set; }
public string SnmpCommunity { get; set; }
}
Config.json
{
"Settings": {
"SubnetPrefix": [
"172.16.0.0/24",
"172.16.1.0/24"
],
"SnmpCommunity": "Public"
},
"Devices": [
{
"Vendor": "Extreme Networks",
"Type": "Switch",
"ObjectOID": "1.3.6.1.4.1.1916.2",
"ModelChecks": [
{
"Check": "ExtremeXOS version 12.*",
"Regex": "(?<Model>.*?> version (?<Version>.*?) by",
"Example": "ExtremeXOS version 12.6.1.3 v1261b3 by release-manager on Thu Jul 21 09:46:07 PDT 2011"
},
{
"Check": "ExtremeXOS.*",
"Regex": ".*\\((?<Model>.*?)\\) version (?<Version>.*?) by",
"Example": "ExtremeXOS (X450a-48t) version 15.3.1.4 v1531b4-patch1-3 by release-manager on Sun Mar 17 03:12:24 EDT 2013"
}
]
},
{
"Vendor": "Cisco",
"Type": "Router",
"ObjectOID": "1.3.6.1.4.1.9.1.1639",
"ModelChecks": [
{
"Check": "Cisco IOS XR Software.*",
"Regex": ".*\\((?<Model>.*?>\\),.*Version (?<Version>.*?)[",
"Example": "Cisco IOS XR Software (Cisco ASR9K Series), Version 6.2.25[Default]\nCopyright (c) 2017 by Cisco Systems, Inc."
}
]
}
]
}