c# - C# Activator.CreateInstance 错误,MissingMethodException:System.MissingMethodException:没有为此对象定义无参数构造函数
问题描述
我正在用 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() 下定义这个默认构造函数。
我想我的问题是,如果我只定义参数化构造函数而不定义默认构造函数,那么默认构造函数是否可能不存在?
请让我知道我的猜测是否正确。我无法提供单元测试的更多细节,因为这是来自我公司的代码库。如果上面有什么我没有解释清楚的地方,也请发表评论。我会很快跟进。
提前感谢您的宝贵时间。
解决方案
推荐阅读
- python - 以这两种不同的方式创建信号有什么区别?
- java - 在按钮上单击我想切换 TextView 的文本
- numpy - numpy:为什么你会使用乘法而不是 matmul 进行矩阵乘法?
- python - python2中无限while循环中的事件处理
- c++ - 与 c++ 中 RGB 子字符串问题的框架逻辑相关的问题
- python - 如何在 macOS 上通过 pip 安装 Twilio 和其他库?
- excel - 使用来自另一个工作表的 500 多个列标题填充工作表的单元格
- javascript - 如何从标签中获取价值并将其价值每秒增加 1?
- sql - 在Oracle中使用分隔符从字符串中提取日期
- javascript - 在哪里从cordova应用上传文件以免费获取文件?