在 UWP 中获取内部构造函数

Get internal constructor in UWP

如何在 UWP 中获取内部参数化构造函数。

为什么 UWP 中没有 such 重载?

var ctr = typeof(T).GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, 
                                   null, CallingConventions.HasThis, 
                                   new[] {typeof(IBuffer)}, null);

我可以在 UWP 中调用的唯一重载是这个

var ctr = typeof(T).GetConstructor(new[]{typeof(IBuffer)});

仅获取 public 构造函数。我需要使用 IBuffer 参数获取 类 的内部构造函数并将它们缓存在委托引用中。

我可以使用 GetConstructors 方法。

var ctor = typeof(T).GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance)
    .FirstOrDefault(c =>
        c.GetParameters()
            .Select(x => x.ParameterType)
            .SequenceEqual(new[] {typeof(IBuffer)}));

var param = Expression.Parameter(typeof(IBuffer), "param1");
var expr = Expression.New(ctor, param);
var lambda = Expression.Lambda<Func<IBuffer, T>>(expr, typeof(T).Name, new[] { param });
return lambda.Compile();