Я взял код, опубликованный Витором, и добавил две небольшие ложные реализации для DataContext и Item, чтобы у меня был запущенный код. Затем я добавил код, который не проходит тест. Тест прошел независимо от того, что я делаю с объектом Item, который добавляю в коллекцию, возвращаемую DataContext.
Единственное исключение, которое мне удалось воспроизвести, произошло в конструкторе. Строка, в которой задано новое описание, никогда не заканчивалась.
Я добавил свой код ниже.
На более общем замечании: переменные-члены-члены обычно являются признаком того, что дизайн может быть улучшен. Я бы предложил сделать эту переменную приватной и работать оттуда. В нашей команде есть правило, что переменные-члены не могут быть открытыми, так как они ведут к слабым проектам. Просто мои два цента.
public class Item {
public int Id;
public string Desc;
}
public class DBDataContext {
public System.Collections.Generic.List<Item> Items {
get {
var items = new System.Collections.Generic.List<Item> {
new Item {
Desc = null,
Id = 1
}
};
return items;
}
}
}
public class busItem {
public Item vItem;
public busItem(int pItem_Id) {
DBDataContext db = new DBDataContext();
Item vItemQuery = (from i in db.Items
where i.Id == pItem_Id
select i).FirstOrDefault();
vItem = new Item();
vItem.Id = vItemQuery.Id;
vItem.Desc = vItemQuery.Desc;
}
}
[Test]
public void TestBusItem() {
busItem item = new busItem(1);
item.vItem.Desc = "new description";
}