Любой способ очистить все поля WithEvents с помощью одной команды? - PullRequest
1 голос
/ 15 октября 2010

Синтаксис vb.net «WithEvents» очень полезен, но если поле WithEvents, которое ссылается на долгоживущий объект, не обнуляется, оно часто будет представлять собой утечку памяти.

Есть ли какая-либоспособ для процедуры Dispose, чтобы vb.net автоматически очищал все поля WithEvents и отписывался от них?

Я нашел хороший способ обернуть создание одноразовых полей, чтобы они автоматически удалялись присодержащий объект удаляется без необходимости индивидуального перечисления таких объектов.Есть ли способ позаботиться о полях WithEvents без необходимости вручную обнулять их в подпрограмме Dispose?

EDIT Поскольку не было никакого ответа, указывающего встроенный способ сделать это безрефлексия, есть ли какие-либо встроенные средства использования рефлексии для определения того, является ли конкретное свойство VB автоматической реализацией "поля" WithEvents?Я знаю, что «поле» WithEvents, называемое «foo», реализовано как свойство, называемое «foo», и поле, называемое «_foo», но это такой распространенный шаблон именования, что я бы на него не рассчитывал.Есть ли какой-нибудь атрибут, который можно использовать для определения того, какие свойства должны быть автоматически обнулены?

1 Ответ

1 голос
/ 15 октября 2010

Это может быть возможно с небольшим количеством волшебства отражения. Но не существует языкового способа запроса полей, помеченных WithEvents

...