0

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

为什么UWP中没有这样的重载?

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)});

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

4

1 回答 1

0

我可以使用一个 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();
于 2017-05-28T23:07:44.513 回答