У меня есть класс, на котором я пытаюсь провести модульные тесты. Этот класс является классом обслуживания WCF. (Сделать его классом дженериков не моя цель.)
У меня есть тип уровня доступа к данным (DAL) (который называется UserDAL), который создается во многих методах. Чтобы протестировать эти методы, мне нужно проверить эти локальные переменные. (В каждом экземпляре UserDAL есть значение, специфичное для метода, поэтому изменение его на уровне класса приведет к грязному коду, поэтому я бы не стал этого делать.)
Я думаю, что было бы неплохо перегрузить конструктор и передать тип для использования в локальных методах. Пустой конструктор param все равно будет создавать обычный 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 (я это придумал) или возможно ли вообще такое мышление.
Если у вас есть решение, не являющееся универсальным, это было бы замечательно.