Exposing a web API wrapper library to consumers
What you're looking for is actually the factory pattern. 

Your implementation could be something like

public class YahooFinanceFactory{

   public IYahooFinanceQuotes GetQuotes()
   {
     return new YahooFinanceQuotesConreteImplementation();
   }

[...]

}


The concrete implementations are still marked as internal so they are not exposed. 

Alternatively, you could use reflection for this.

public static T ResolveConcreteType&lt;T&gt;()
{
    return (from t in Assembly.GetExecutingAssembly().GetTypes()
            where t.GetInterfaces().Contains(typeof(T))
            &amp;&amp; t.IsClass //Find the classes that implement the interface we want
            select (T)Activator.CreateInstance(t, null))
        .SingleOrDefault();

}


Usage:

var quotes = YahooFinanceFactory.ResolveConcreteType&lt;IYahooQuotes&gt;();


This makes the assumption that your concrete types support empty constructors however.