我正在尝试在一个非常庞大且臃肿的系统上实现一个使用单元测试的框架,主要问题是 70% 的系统是用静态方法实现的。这就是我达到 Moles 的方式,我非常有信心达到我的目标(我已经很接近了)。
我现在遇到的问题是我正在尝试使用通用参数来使用静态方法:
public static T ExecScalar<T>(IDbConnection cx, string commandText, IDbTransaction tx, IEnumerable<IDbDataParameter> parameters)
在网上搜索我发现了这个论坛消息:
http://social.msdn.microsoft.com/Forums/uk/pex/thread/3faadca2-a26f-449c-942e-d800a6079e02
这正是我的问题,建议阅读第 10 页的手册。
我已经阅读了第 10 页的手册,但它谈论的是存根而不是磨合。我试图应用所描述的解决方案,但如果我输入:
Ktcar.Cs.Dal.DB.Moles.MDALDB.ExecScalarIDbConnectionStringIDbTransactionIEnumerableOfIDbDataParameter<int> = delegate(IDbConnection conn, String command, IDbTransaction trx, IEnumerable<IDbDataParameter> parameters)
我得到:
“只有赋值、调用、递增、递减和新建对象表达式可以作为语句使用”</p>
我也试过:
Ktcar.Cs.Dal.DB.Moles.MDALDB.ExecScalarIDbConnectionStringIDbTransactionIEnumerableOfIDbDataParameter<T> = delegate(IDbConnection conn, String command, IDbTransaction trx, IEnumerable<IDbDataParameter> parameters)
我得到同样的错误
或者:
Ktcar.Cs.Dal.DB.Moles.MDALDB.ExecScalarIDbConnectionStringIDbTransactionIEnumerableOfIDbDataParameter = null;
然后我得到:
“不能分配给‘ExecScalarIDbConnectionStringIDbTransactionIEnumerableOfIDbDataParameter’,因为它是‘方法组’”</p>
请问,任何人都可以帮助我如何使用通用类型输出模拟静态方法吗?