Декомпилированная сборка - необычный код
Я декомпилировал сборку, используя ILSpy, и один класс, в частности, привлек мое внимание:
public class CustomTextStream : NetworkStream
{
private EventHandler someEvent;
public event EventHandler SomePublicEvent
{
add
{
EventHandler eventHandler = this.someEvent;
EventHandler eventHandler2;
do
{
eventHandler2 = eventHandler;
EventHandler value2 =
(EventHandler)Delegate.Combine(eventHandler2, value);
eventHandler =
Interlocked.CompareExchange(
ref this.someEvent, value2, eventHandler2);
}
while (eventHandler != eventHandler2);
}
remove
{
// similar stuff...
}
}
}
Далее в коде похоже, что закрытый делегат используется для запуска фактического события:
if (something != null && somethingElse != 0)
{
this.someEvent(this, new CustomEventArgs(someArg));
}
Вопрос: может кто-то догадаться, в чем может быть идея этого пользовательского метода доступа, если предположить, что некоторые "компилировать / декомпилировать магию " А не было»не состоится? Я'я не очень знаком с IL, кстати ...
(Примечание: приложение является многопоточным и использует сеть, очевидно.)