Как можно сохранить ссылку на созданный обьект, чтобы изменить его после добавления в коллекцию?

258
03 декабря 2017, 10:23

Надо сломать HashSet, для чего тредуется добавить в него объект, после этого изменить его (извне коллекции). Есть следующий класс:

public class GhostsTask : 
    IFactory<Vector>, IMagic
{
    public void DoMagic() {}
    Vector IFactory<Vector>.Create() {}
}

Как в методе Create можно сохранить ссылку на последний созданный объект, чтобы изменить его методом DoMagic() уже после добавления в HashSet :

TGhostsTask task = new TGhostsTask();
var ghostItem = task.Create();
var set = new HashSet<TItem> { ghostItem };
Assert.IsTrue(set.Contains(task.Create()));
task.DoMagic();
Assert.AreEqual(1, set.Count, "HashSet содержит элементы после DoMagic()");
Assert.AreEqual(ghostItem, set.ToArray()[0], "единственный элемент HashSet после DoMagic() все еще ghostItem ");
Assert.IsFalse(set.Contains(ghostItem), "ghostItem не находится через HashSet.Contains() после DoMagic()");
set.Add(ghostItem);
Assert.AreEqual(2, set.Count, "HashSet Add и Count перестают работать корректно после DoMagic()");
Answer 1

Наверное, завести какое-нибудь поле в классе LastObject и после создания очередного объекта его перезаписывать.

Далее, спокойно можешь его использовать в любом методе класса.

Только не забудь проверить на null-это будет значить, что объектов создано не было.

READ ALSO
Webclient + proxy

Webclient + proxy

Таким образом точно будет работать через прокси, а не мой IP ?

204
Заменить цифры на символ * в string

Заменить цифры на символ * в string

Дана строка с символами,например,"aaaa456bbb", и надо заменить все цифры на символ * не используя встроенные функции string

300
Гео-объект, как скрыть / отобразить и эмулировать клик по гео-объекту зная его id?

Гео-объект, как скрыть / отобразить и эмулировать клик по гео-объекту зная его id?

На карте создаются геообъектыУ этих объектов есть уникальный для каждого id и при клике открывается попап с информацией о гообъекте (http://clip2net

352
Inputmask jquery начало маски с 8ки?

Inputmask jquery начало маски с 8ки?

Все приветПодскажите, пожалуйста, поставил этот скрипт "Inputmask" Ставлю такую маску { "mask": "8(###)###-##-##", "type": "mobile" } она выглядит так мне необходимо...

263