普通のリフレクションでいけると思う。
コンパイラとおしてないがこんな感じか。

delegate T D<T, U>(U u);
static D<T, U> F<T, U>() {
ConstructorInfo ci = typeof(T).GetConstructor(new Type[] { typeof(U) });
if (ci != null)
return delegate(U u) { return (T)ci.Invoke(new object[] { u }); };
return null;
}