【问题标题】:Parameterless constructor in c#c#中的无参数构造函数
【发布时间】:2013-08-07 10:38:40
【问题描述】:

我正在为 Visual Studio 2012 中的现有类“Person”编写单元测试,该类具有带有 2 个参数和一些业务逻辑的构造函数。

TestMethod()        
public void VerifyPersonTest()
{
    //Using PrivateObject class
    PrivateObject privateHelperObject = new PrivateObject(typeof(Person));

    //Some business logic                            

}

当我尝试运行上面的测试时出现异常“System.MissingMethodException {“没有为此对象定义无参数构造函数。”}”。所以我已经向person类添加了无参数构造函数并且能够运行测试没有任何问题。

我有以下问题

1)由于我在person类中添加了无参数构造函数,它会破坏Person类的任何现有功能吗?

2) PrivateObject privateHelperObject = new PrivateObject(typeof(Person));

上面的语句调用了person类的无参构造函数,假设我想调用带2个参数的构造函数,上面的语句怎么写?

【问题讨论】:

  • new PrivateObject(typeof(Person)); 不调用类Person 的无参数构造函数。您正在通过采用Type 的构造函数创建PrivateObject 的实例。它不需要Person 的实例。
  • MissingMethodException 意味着非常不同的东西。您没有运行与编译时相同的代码。 DLL 地狱问题。您可能通过添加此构造函数并重建 DLL 来修复它。修复是重建它,而不是添加构造函数。所以你最好再次删除它。
  • @HansPassant 谢谢
  • @TimSchmelter 谢谢

标签: visual-studio-2010 oop c#-4.0


【解决方案1】:

您也可以自己实例化Person 对象:

var myPerson = ...;
var privateHelperObject = new PrivateObject(myPerson);

【讨论】:

    猜你喜欢
    • 2015-09-12
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    相关资源
    最近更新 更多