IServiceProvider Extension Method

I love extension methods, ’nuff said:

public static class ServiceProviderExtension
{
    public static T GetService<T>(this IServiceProvider provider) where T: class
    {
        return provider.GetService(typeof(T)) as T;
    }

    public static K GetService<T, K>(this IServiceProvider provider)
        where T : class, K
        where K : class
    {
        return provider.GetService() as K;
    }

    public static K GetService<K>(this IServiceProvider provider, Type type)
        where K : class
    {
        return provider.GetService(type) as K;
    }

    public static K GetService<K>(this IServiceProvider provider, string type)
        where K : class
    {
        return provider.GetService(Type.GetType(type)) as K;
    }
}

1 Comment »

  1. Kevin Driedger Said,

    November 3, 2009 @ 10:18 am

    The code snippet did not compile. Perhaps the following is better:
    public static class ServiceProviderExtension
    {
    public static T GetService(this IServiceProvider provider) where T : class
    {
    return provider.GetService(typeof(T)) as T;
    }

    public static K GetService(this IServiceProvider provider)
    where T : class, K
    where K : class
    {
    return provider.GetService(typeof(T)) as K;
    }

    public static K GetService(this IServiceProvider provider, Type type)
    where K : class
    {
    return provider.GetService(type) as K;
    }

    public static K GetService(this IServiceProvider provider, string type)
    where K : class
    {
    return provider.GetService(Type.GetType(type)) as K;
    }
    }

RSS feed for comments on this post

Leave a Comment