我正在用C#编程,现在我有一个简单的问题要问。
我有三节课:
内部抽象类Foo ,它没有定义构造函数/实例。
内部抽象类Bar:Foo ,该类具有定义的默认构造函数:
/// <summary>
/// Set up defaults.
/// </summary>
public Bar()
{
}
内部类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()下定义该默认构造函数。>
我想我的问题是,如果仅在不定义默认构造函数的情况下定义参数化构造函数,那么默认构造函数是否不存在?
请让我知道我的猜测是否正确。我无法提供有关单元测试的更多详细信息,因为这来自我公司的代码库。如果有什么我上面没有很好解释的,请也发表评论。我会很快跟进。
提前感谢您的宝贵时间。