我有一個類,我試圖做單元測試。該類是一個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