我有一个接受以下参数的类型:
public SmaSeries(ISeries<decimal> parent, int periods, TierKind? runOnTier = null)
我正在尝试通过在args参数中传递object []来使用Activator.CreateInstance(接受类型和args的重载)来创建这种类型的实例:
new object[]
{
new DecimalSeries(),
20,
new Nullable<TierKind>(TierKind.Client)
}
//DecimalSeries implements ISeries<decimal>
找不到类型为“ SmaSeries”的构造方法。
有没有办法修复args,以便激活器找到构造函数?
谢谢。
最佳答案
在.NET 4.5甚至2.0中都可以正常工作
using System;
class SmaSeries
{
public SmaSeries(ISeries<decimal> parent, int periods,
TierKind? runOnTier = null) { }
static void Main()
{
object[] args = new object[]
{
new DecimalSeries(),
20,
new Nullable<TierKind>(TierKind.Client)
};
object obj = Activator.CreateInstance(typeof(SmaSeries), args);
}
}
enum TierKind { Client }
interface ISeries<T> { }
class DecimalSeries : ISeries<decimal> { }
我想也许是:您的构造函数或其中一种类型可能不是公开的吗?
关于c# - 找不到类型为“###”的构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12639403/