Доступ к закрытому закрытию - отметьте методы как безопасные
Это насчет ReSharper'апредупреждениеДоступ к закрытой крышке " который обычно появляется, когда объект, который позже утилизируется, используется в лямбде.Доступ к закрытому закрытию в C #? обсуждает это немного подробнее.
Мой вопрос: для методов, которые берут такие lamdbas и выполняют их немедленно (так что вы можете быть уверены, что они всегда выполняются до удаления указанного объекта):
Есть ли способ пометить их как безопасные, чтобы любой код, использующий этот метод, больше не выдавал эти предупреждения?
Пример:
using (var myObject = new MyDisposableObject())
{
DoThisTwice(() => myObject.DoSomething());
}
...
void DoThisTwice(Action do)
{
do();
do();
}
DoThisTwice принимает делегата (или лямбду) и выполняет его синхронно. Ко времени возврата метода лямбда больше не будет выполняться. Только тогдаmyObject
расположен, так что мы готовы идти. Мы могли бы отметить линию вызоваDoThisTwice
с комментарием, но это должно быть сделано во всех местах, используя метод аналогичным образом. Вместо этого я хотел бы отметитьDoThisTwice
настолько безопасно, что Resharper не отображает никаких предупреждений для тех, кто вызывает метод.