 <p>I've got two approaches for you:</p> <p>Firstly using Activator.CreateInstance</p> <pre><code>public static IEnumerable&lt;TV&gt; To&lt;TU, TV&gt;(this IEnumerable&lt;TU&gt; source) { return source.Select(m =&gt; (TV) Activator.CreateInstance(typeof(TV), m)); } </code></pre> <p>Secondly, you could use interfaces to define properties rather than use parameterized constructors:</p> <pre><code>public interface IRequiredMember {} public interface IHasNeccesaryMember { IRequiredMember Member { get; set; } } public static IEnumerable&lt;TV&gt; To&lt;TU, TV&gt;(this IEnumerable&lt;TU&gt; source) where TV : IHasNeccesaryMember, new() where TU : IRequiredMember { return source.Select(m =&gt; new TV{ Member = m }); } </code></pre> <p>The first method works but feels dirty and there is the risk of getting the constructor call wrong, particularly as the method is not constrained.</p> <p>Therefore, I think the second method is a better solution.</p>