我有一个类,我试图做单元测试。该类是一个WCF服务类。 (使它成为一个泛型类不是我的目标。)C# - 构造函数中的类型参数 - 没有泛型
我有一个在许多方法中实例化的数据访问层(DAL)类型(称为UserDAL)。为了让这些方法得到测试,我需要得到这个局部变量的模拟。 (UserDAL的每个实例都有特定于方法的值,因此将其更改为类级别的变量会导致代码混乱,因此我宁愿不这样做。)
我在想的是将重载构造函数并传入一个类型用于本地方法。空的参数构造函数仍然会创建一个普通的UserDAL,但重载的会有一个实现IUserDAL的模拟类型。
我不确定说我想传入一个类型的语法。请注意,我没有试图传入一个变量,而是一个类型。
例子:
public class MyWCFClass: IMyWCFClass
{
private TypeParam _myUserDALType;
public MyWCFClass()
{
_myUserDALType = UserDAL;
}
public MyWCFClass(TypeParam myUserDALType)
{
_myUserDALType = myUserDALType;
}
//methods to use it
public MyMethod()
{
IUserDAL userDAL = new _myUserDALType();
//Call method in IUserDAL
userDAL.CreateUser();
}
// Several similar methods that all need a different UserDAL go here
.....
}
所以,我不知道是什么样的类型TypeParam的是(我编的),或者如果这种想不到的是甚至有可能。
如果您有一个非泛型解决方案,那就太棒了。
我不想做泛型的原因是因为所有静态方法调用必须更新为使用通用参数(即MyWCFClass .MyStaticMethod)这需要在不应该了解的项目中引用我的数据访问层数据访问层。 (加上我试了一下,我得到一个对象没有设置为一个对象错误isntance。) –
Vaccano
2009-12-04 21:28:06