Я хотел бы иметь возможность динамически циклически перебирать все параметры в пространстве имен ниже, чтобы записать имя и значение в файл, в который будут записаны результаты.Значения настроек задаются в начале программы.Функция, которая записывает результаты в файл, находится в отдельном пространстве имен, поэтому я хотел бы передать классы в функцию в качестве параметра.
Этот пост не совсем совпадает смой вопрос, как я хочу использовать значения в существующих классах.
Я посмотрел на использование Reflection , но не будет работать, потому что пространство имен "не может быть найдено", когда яЯ пишу в файл, и предпочел бы не включать директиву using, поскольку это усложнит зависимости.Я также взглянул на класс Activator , но это создает новый экземпляр объекта, и мне пришлось бы перечитать значения параметров.Возможно, это лучший вариант.
Settings.cs
namespace Globalsettings
{
public static class FileSettings
{
/* Filenames for each required file. */
public static string dataFile = null;
public static string geometryFile = null;
public static string temporarySpeedRestrictionFile = null;
public static string trainListFile = null; /* File only required if includeAListOfTrainsToExclude is TRUE. */
public static List<string> simulationFiles = new List<string>(new string[6]);
public static string aggregatedDestination = null;
}
public static class Settings
{
/* Data boundaries */
public static DateTime[] dateRange; /* Date range of data to include. */
public static bool excludeListOfTrains; /* Is a list of trains that are to be excluded available. */
/* Corridor dependant / Analysis parameters */
public static double startKm; /* Start km for interpoaltion data. */
public static double endKm; /* End km for interpolation data. */
public static double interval; /* Interpolation interval (metres). */
public static bool IgnoreGaps; /* Will the interpolation ignore gaps in the data (ie. gaps wont be interpolated through) */
public static double minimumJourneyDistance; /* Minimum distance of a train journey to be considered valid. */
public static bool trainsStoppingAtLoops; /* Analyse the performance of the trains as they stop at the loops. */
/* Processing parameters */
public static double loopSpeedThreshold; /* Cuttoff for the simulation speed, when comparing the train to the simualted train. */
public static double loopBoundaryThreshold; /* Distance either side of the loop to be considered within the loop boundary (km). */
public static double TSRwindowBoundary; /* Distance either side of the TSR location to be considered within the TSR boundary (km). */
public static double timeThreshold; /* Minimum time between data points to be considered a seperate train. */
public static double distanceThreshold; /* Minimum distance between successive data points. */
/* Simulation Parameters */
public static double Category1LowerBound; /* The lower bound cuttoff for the underpowered trains. */
public static double Category1UpperBound; /* The upper bound cuttoff for the underpowered trains. */
public static double Category2LowerBound; /* The lower bound cuttoff for the overpowered trains. */
public static double Category2UpperBound; /* The upper bound cuttoff for the overpowered trains. */
public static analysisCategory analysisCategory;
public static trainOperator Category1Operator = trainOperator.Unknown;
public static trainOperator Category2Operator = trainOperator.Unknown;
public static trainOperator Category3Operator = trainOperator.Unknown;
public static trainCommodity Category1Commodity = trainCommodity.Unknown;
public static trainCommodity Category2Commodity = trainCommodity.Unknown;
public static trainCommodity Category3Commodity = trainCommodity.Unknown;
public static trainType Category1TrainType = trainType.Unknown;
public static trainType Category2TrainType = trainType.Unknown;
public static trainType Category3TrainType = trainType.Unknown;
}
}
Есть ли способ передать классы в функцию, подобную этой?
writeSettings(Filesettings fileS, Settings s)
{
for (int i = 0; i < fileS.Count(); i++)
{
Console.WriteLine(fileS[i].Name,": ",fileS[i].value);
}
for (int i = 0; i < s.Count(); i++)
{
Console.WriteLine(s[i].Name,": ",s[i].value);
}
}