📦 about 🧻 posts
I like doing scopes in c#. I like that pattern. I always used to write an IDisposable class for each scope.. but then I saw this pattern.
public struct DisposeAction : IDisposable
{
	public Action Action;

	public DisposeAction( Action action )
	{
		Action = action;
	}

	public void Dispose()
	{
		Action?.Invoke();
		Action = null;
	}

	public static IDisposable Create( Action action )
	{
		return new DisposeAction( action );
	}
}
So how this works, is you can do something like this..
public partial World
{
    public IDisposable Push()
    {
        var previous = CurrentWorld;
        CurrentWorld = this;

        return DisposeAction.Create( () =>
        {
            CurrentWorld = previous
        } );
    }
}
Then in your normal every day code, you can scope push shit.
using ( myWorld.Push() )
{
    // Do stuff using CurrentWorld

    using ( childWorld.Push() )
    {
        // Do stuff using CurrentWorld
    }

    // Do stuff using CurrentWorld
}
question_answer
Dan Bugglin
06 November 2023
I did something like this in a project I'm working on, though I put an event instead of a callback on the class. Callback is definitely more readable (I'm not touching my existing code though, it works fine!)

I used it to make a queueing system. Like the lock keyword but it guarantees everything runs in the order it was queued up, and I can destroy the whole queue if it becomes irrelevant.
Anix
05 January 2024
Check your e-mail, report to RUBAT.
Георгий Костоганов
02 February 2024
Гарри Ньюман, привет, обожаю твою игру, играю в нее уже 4 года, наиграл 2500 часов. Но недавно мой аккаунт взломали, им воспользовался мошенник и поигрался с читами на серверах. после чего мой аккаунт получил EAC, сейчас я восстановил доступ к своему аккаунту но играть не могу. Служба поддержки ответила, что я несу ответственность за свою учетную запись Steam и они ничего не могут сделать. Почему я честный игрок лишен доступа к любимой игре, я не играл с читами, почему я должен страдать из-за какого-то мошенника?


Я очень расстроен из-за этого, потому что ржавчина - единственная игра, в которую я играю, Гарри, я знаю, что это не твое дело, но если ты можешь мне помочь, пожалуйста, я готов предоставить любые доказательства своей невиновности, я правда извини, что так получилось, но мне очень нравится твоя игра...
Вот моя почта:
[email protected]
Если вы можете мне как-то помочь или вам нужны доказательства, напишите мне :(

Add a Comment

An error has occurred. This application may no longer respond until reloaded. Reload 🗙