Мне надо в одном списке хранить как общие параметры, так и пользовательские параметры. Для этого я использую вложенные классы. Вот для примера
class Parameters
{
public class UserParameters
{
string testUserParameters;
}
public class AllPrameters
{
string testAllParameters;
}
}
но когда я создаю объект класса Parameters. Я не могу ему назначить параметры вложенных классов. Например testUserParameters
class Test
{
static void x()
{
Parameters g = new Parameters();
}
}
что делать?
Если не понятно зачем я это делаю, поясняю. Мне надо хранить параметры программы в одном конфигурационном файле.
пример: допустим мне надо хранить сотрудников компании я в одном конфигурационном файле храню общие данные: количество сотрудников, количество отделов, название всех отделов... А также храню данные о каждом человеке. ФИО, отдел, возраст... И здесь я создаю объект когда мне нужны общие данные я в объекте заполняю только общие данные, а когда я заполняю данные на сотрудника я в объекте заполняю только данные на сотрудника и храню это в общем списке.
Вы подклассы описали, но и только, сами то их как члены класса объявите хотя бы для начала:
class Parameters
{
public class UserParameters
{
string testUserParameters;
}
public class AllPrameters
{
string testAllParameters;
}
public UserParameters up;
public AllPrameters ap;
}
У членов ваших вложенных классов не выставлены модификаторы видимости. То есть по умолчанию они private
. Соответственно вы не можете обращаться к этим членам извне, в том числе и из внешнего класса Parameters (внешний класс не имеет доступа к приватным членам внутреннего, тогда как внутренний может обращаться к закрытым членам внешнего класса).
А вообще возникает вопрос необходимости вложенных классов в данном случае. Вложенные классы - это довольно специфическая сущность, и реальная необходимость в них возникает нечасто. Попробуйте сами себе ответить на вопрос: что именно в вашем случае можно реализовать (или проще реализовать) с помощью вложенных классов, но нельзя с помощью обычных, не вложенных? Подозреваю, что ничего
Не совсем понимаю зачем делать вложенные классы, точнее какую выгоду вы от этого получите.
В вашем случае я бы сделал так :
public class UserParameters
{
public string testUserParameters { get; set; }
}
public class AllPrameters
{
public string testAllParameters { get; set; }
}
public class Parameters
{
public Parameters()
{
userParameters = new UserParameters();
allPrameters = new AllPrameters();
}
public UserParameters userParameters;
public AllPrameters allPrameters;
}
//вызов
Parameters g = new Parameters();
g.userParameters.testUserParameters = "test";
Вы говорите про список, не подойдет ли вам IDictionary? То есть пары имя/значение для параметров.
class Parameters {
IDictionary<string, string> _userParameters;
IDictionary<string, string> _allParameters;
//...
}
UPD:
Во-первых, сейчас у вас нет списков.
Во-вторых, зачем вам внутренние классы? Их обычно используют для сокрытия каких-то сервисных типов внутри публичного типа. Если нужна аггрегация, то это делается иначе - через членство экземпляров одного типа в другом. (это не JavaScript)
В-третьих, нет прямой зависимости "один тип - один файл", родственность для (де)сериализации выражается через аггрегацию.
class A { }
class B { }
class C {
public A a { get; set; }
public B b { get; set; }
}
var jsonData = File.ReadAllText("myFile.json");
var c = JsonConvert.DeserializeObject<C>(jsonData);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У класса есть свойство типа double, как задать, чтобы оно сериализовалось с конкретным количеством знаков после запятой?
Подлагивает интерфейс Visual Studio с установленным R#
Добрый день! Подскажите, пожалуйста, как решить такую задачу, мне нужно выводить записи в ListView начиная с предпоследней опубликованной, последнюю...
Задача: пользователь ходит через popup-окно по определенному сайту и в определенный момент нажимает в этом окне кнопку Сохранить cookies - после...