title: WebApp.Start<TStartup> Method Type Parameter
body: <p>In setting up my Windows Service application to self host using Owin based on this article:</p>
  
  <p><a href="http://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api" rel="noreferrer">http://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api</a></p>
  
  <p>I used this overload of the WebApp.Start method:</p>
  
  <p><a href="http://msdn.microsoft.com/en-us/library/dn300228(v=vs.113).aspx" rel="noreferrer">WebApp.Start Method (String)</a></p>
  
  <p>Here is my code:</p>
  
  <pre><code>//(in startup method) 
  _server = WebApp.Start&lt;Startup&gt;(BaseAddress);
  
  public class Startup
  {
      // This code configures Web API. The Startup class is specified as a type
      // parameter in the WebApp.Start method.
      public void Configuration(IAppBuilder appBuilder)
      {
          // Configure Web API for self-host. 
          var config = new HttpConfiguration();
          config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new
          {
              id = RouteParameter.Optional
          });
  
          appBuilder.UseWebApi(config);
      }
  } 
  </code></pre>
  
  <p>It works fine, so no complaints.  </p>
  
  <p>But what exactly are the requirements of the type parameter of the Start method?  It doesn't appear to have any constraints, and I haven't been able to find any documentation on what my options/requirements are on this parameter.  Does it look for methods that take IAppBuilder as a parameter?  What if I change the name of the Configuration() method to something else?  What if I make the method internal?  Are there other options I can configure with this class?</p>
  
  <p>Where is all of this this documented?  I feel like without the article linked above, I never would have been able to figure out what to implement.</p>