Skip to content

Conversation

@dsmailys
Copy link

My first pull request

@dsmailys
Copy link
Author

Any suggestions are welcome. This might not be an extension method due to not having this parameter in method declaration, but it is very helpful to use nevertheless.
If the author approves - will add tests for it.

@JonathanMagnan
Copy link
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
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
Copy link
Author

dsmailys commented Dec 4, 2017

@JonathanMagnan looks great! I prefer more the syntax that you have outlined in your latest comment. Will you modify it accordingly or should I change up the code for the pull request?

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