C#Activator.CreateInstance错误,MissingMethodException:System.MissingMethodException:没有为此对象定义无参数构造函数

时间:2018-08-28 17:57:53

标签: c#

我正在用C#编程,现在我有一个简单的问题要问。

我有三节课:

  1. 内部抽象类Foo ,它没有定义构造函数/实例。

  2. 内部抽象类Bar:Foo ,该类具有定义的默认构造函数:

    /// <summary>
    /// Set up defaults.
    /// </summary>
    public Bar()
    {
    
    }
    
  3. 内部类Baz:Bar 。对于此类,我没有键入任何默认构造函数。相反,我有一个接受一些参数的构造函数,并将这些参数的值分配给此类下的字段。

    /// <summary>
    /// Set up defaults with parameters.
    /// </summary>
    /// <param name="parameters">GenericParams json string to use</param>
    /// <param name="startTime">Start time parameter. Must be a valid DateTime format.</param>
    /// <param name="endTime">End time parameter. Must be a valid DateTime format.</param>
    /// <param name="pageSize">Page size argument</param>
    public Baz(string parameters, string startTime, string endTime, int pageSize)
    {
        this.Parameters = parameters;
        this.StartTime = startTime;
        this.EndTime = endTime;
        this.PageSize = pageSize;
    }
    

但是,我现在遇到的单元测试脚本有问题:

    /// <summary>
    /// Unit Test 1.
    /// </summary>
    public void Test1()
    {
            ********Some Codes********
            Foo args = Activator.CreateInstance(typeof(Baz)) as Foo;
            Assert.IsNotNull(args);
            ********Some Codes********
        }
    }

    /// <summary>
    /// Unit Test.
    /// </summary>
    public void Test2()
    {
            ********Some Codes********
            Bar args = Activator.CreateInstance(typeof(Baz)) as Bar;
            Assert.IsNotNull(args);
            ********Some Codes********
        }
    }

在我的单元测试中,与Activator.CreateInstance()一起发生错误。是因为我没有在Baz()下定义默认构造函数吗?我的猜测是,由于我定义了一个接受Baz()参数的构造函数,因此,如果我想使用Activator.CreateInstance(type)来调用类的默认构造函数,则必须在Baz()下定义该默认构造函数。

我想我的问题是,如果仅在不定义默认构造函数的情况下定义参数化构造函数,那么默认构造函数是否不存在?

请让我知道我的猜测是否正确。我无法提供有关单元测试的更多详细信息,因为这来自我公司的代码库。如果有什么我上面没有很好解释的,请也发表评论。我会很快跟进。

提前感谢您的宝贵时间。

0 个答案:

没有答案