Add Using extension for small using statements. by dsmailys · Pull Request #7 · zzzprojects/Z.ExtensionMethods · GitHub
Skip to content

Add Using extension for small using statements.#7

Open
dsmailys wants to merge 1 commit into
zzzprojects:masterfrom
dsmailys:master
Open

Add Using extension for small using statements.#7
dsmailys wants to merge 1 commit into
zzzprojects:masterfrom
dsmailys:master

Conversation

@dsmailys

Copy link
Copy Markdown

My first pull request

@dsmailys

Copy link
Copy Markdown
Author

@JonathanMagnan

Copy link
Copy Markdown
Member

Hello @dsmailys ,

Thank you for submitting this pull.

I believe it's a very good addition and I could have used it myself multiple times.

No need to add a test, I will add it on my side by testing it (Anyway, there is not a lot of tests we can add here hehe!)

Best Regards,

Jonathan

@JonathanMagnan JonathanMagnan self-assigned this Sep 22, 2017
@JonathanMagnan

Copy link
Copy Markdown
Member

Hello @dsmailys ,

Sorry for the long delay ;)

Is there a reason why you did make it as an extension method such as:

public static void Using<TDisposable>(this TDisposable factory, Action<TDisposable> action)
    where TDisposable : IDisposable
{
    using (var disposable = factory)
    {
        action(disposable);
    }
}

public static TResult Using<TDisposable, TResult>(this TDisposable factory, Func<TDisposable, TResult> action)
    where TDisposable : IDisposable
{
    using (var disposable = factory)
    {
        return action(disposable);
    }
}

I believe this implementation will be better which will allow code such as:

var sqlConnection = new SqlConnection();

sqlConnection.Using(x =>
{
    if (x.State != ConnectionState.Open)
    {
                    
    }
});

Let me know your though.

Best Regards,

Jonathan

@dsmailys

dsmailys commented Dec 4, 2017

Copy link
Copy Markdown
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants