2017-05-28 13 views
0

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

です。私はIBufferパラメータでクラスの内部コンストラクタを取得し、それらを委譲参照でキャッシュする必要があります。

+0

あなたは私にそれを打つ。私は反射のもののいくつかのために.net標準2.0を待つ必要があると思います。 –

答えて

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(); 
関連する問題