Если тестовый класс выглядит так:
public partial testclass
{
IDictionary<string, string> test_dict= new Dictionary<string, string>();
String ping_msg
private void test1()
{
test_dict = develop.AddPing(ping_msg)
}
public void call_test1()
{
test_dict["NET_MSG"] = "Putting new message";
}
public void call_test2()
{
test_dict["NET_MSG"] = "Putting new message 2";
}
public void call_test3()
{
test_dict["NET_MSG"] = "Putting new message3";
}
}
Проблема в том, что test1()
никогда не вызывается для заполнения начального словаря, поэтому начальный словарь пуст и строки
test_dict["NET_MSG"] = "Putting new message1";
test_dict["NET_MSG"] = "Putting new message2";
test_dict["NET_MSG"] = "Putting new message3";
создаем ключ "NET_MSG" в пустом словаре.
Чтобы заполнить и изменить только NET_MSG, добавьте вызов к test1()
, чтобы установить test_dict
в словарь, который вы хотите использовать вместо пустого словаря.
Также помните, что если вы создаете новый класс каждый раз, test1()
должен вызываться каждый раз.
Пример 1:
public void call_test1() {
test1();
test_dict["NET_MSG"] = "Putting new message1";
}
Использование:
testclass test = new testclass(<ctor args>);
test.call_test1();
Это заполнит, а затем изменится NET_MSG
Пример 2:
public void init() {
test1();
}
public void call_test1() {
test_dict["NET_MSG"] = "Putting new message1";
}
Использование:
testclass test = new testclass(<ctor args>);
test.init();
test.call_test1();
Это немного более явно при определении того, что происходит - инициализация происходит, поэтому данные инициализируются до того, как методы call_*
будут полезны.
Вы можете даже:
testclass test = new testclass(<ctor args>);
test.init();
test.call_test1();
//Do something with the data
test.call_test2();
//Do something with the data
test.call_test3();
//Do something with the data
Затем вы инициализируете один раз, и call_ * будет использовать тот же словарь и только изменит значение «NET_MSG».