title: What does this C# syntax do?
body: <p>I am reading a post about mobile web development and ASP.NET MVC here: <a href="http://www.hanselman.com/blog/ABetterASPNETMVCMobileDeviceCapabilitiesViewEngine.aspx" rel="nofollow">http://www.hanselman.com/blog/ABetterASPNETMVCMobileDeviceCapabilitiesViewEngine.aspx</a>.</p>
  
  <p>In the article, Scott Hanselman goes through the process of creating his own view engine to render different views based on whether the site is requested from a mobile web browser or not.</p>
  
  <p>In his <code>MobileHelpers</code> class, he has several methods with signatures that are very foreign to me. Here's an example:</p>
  
  <pre><code>        public static void AddMobile&lt;T&gt;(this ViewEngineCollection ves, Func&lt;ControllerContext, bool&gt; isTheRightDevice, string pathToSearch)        
          where T : IViewEngine, new()    
          {        
              ves.Add(new CustomMobileViewEngine(isTheRightDevice, pathToSearch, new T()));    
          }   
  </code></pre>
  
  <p>I've worked a little bit with inline functions like this (I think thats what they're called) but this logic is eluding me. I don't understand the purpose of the <code>where T : ......</code> line either.  </p>
  
  <p>Could you guys help me understand what is happening here?</p>