如何调用其中包含 ReadOnlySpan<T> 参数的构造函数?

问题描述 投票:0回答:0

这是我第二次问这个问题,因为它已被标记为重复,但我的问题仍然没有解决我想不通.

链接 1
链接 2

来自链接1: 下面的代码来自已接受的答案,但不起作用。

CS0306 类型“ReadOnlySpan”不能用作类型参数

var delegateCtor = Expression.Lambda<Func<ReadOnlySpan<byte>,object>>
(ctorCall, new ParameterExpression[] { param }).Compile();

所以我的问题又来了:

在 .Net 框架中

BigInteger
有一个构造函数,我可以这样调用它:

ConstructorInfo _ctor = typeof(BigInteger).GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null,
            new Type[] { typeof(UInt32[]), typeof(Boolean) }, null);

BigInteger result = (BigInteger)_ctor.Invoke(new Object[] { new UInt32[] { 42, 69, 314 }, false });

最近换成.Net Core,构造函数改成:

ConstructorInfo _ctor = typeof(BigInteger).GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance,
            new Type[] {typeof(ReadOnlySpan<UInt32>), typeof(Boolean) });

所以合乎逻辑的步骤是:

BigInteger result = (BigInteger)_ctor.Invoke(new Object[] { new ReadOnlySpan<UInt32>(new UInt32[] { 42, 69, 314 } ), false } );

但是我遇到了一个错误。

错误 CS0029 无法将类型“System.ReadOnlySpan”隐式转换为“对象”。

我怎样才能调用一个构造函数,它有两个参数,其中一个是

ReadOnlySpan

谢谢

c# reflection delegates
© www.soinside.com 2019 - 2024. All rights reserved.