我有一个接受以下参数的类型:

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/

10-11 00:13