Внедрение основных зависимостей не является сложной концепцией для понимания. Вам необходимо выполнить следующие действия:
- Создание абстрактного класса или, предпочтительно, интерфейса.
- Создайте класс, который реализует этот интерфейс.
- Внедрить интерфейс в класс конструктора, который зависит от него.
Например:
public interface IMyRepository
{
void SaveData();
}
public class MyRepository : IMyRepository
{
public void SaveData()
{
//...Do Something
}
}
public class MyDomainService
{
private readonly IMyRepository _repository;
public MyDomainService(IMyRepository repository)
{
_repository = repository;
}
public void SaveNewEntityInDatabase()
{
//... Do Something
_repository.SaveData();
}
}
Сделав это, вы эффективно внедрили IMyRepositoryDependency в класс MyDomainService, так что теперь вы можете смоделировать или заглушить его, используя вашу любимую среду для моделирования или написав собственную.
В первой части вашего вопроса, касающегося WCF, я мог бы истолковать этот вопрос многими способами, поэтому вам нужно быть более конкретным, чтобы получить лучшую помощь.
Если вы действительно хотите протестировать сервисы WCF, я бы порекомендовал использовать их только как фасад для вашего приложения, поэтому вам не нужно будет на самом деле тестировать сервисы, но объекты домена вашего уровня бизнеса.
Например:
public class MyWCFService
{
public void SaveNewEntityInDatabase()
{
var myDomainBusinessService = new MyDomainBusinessService();
myDomainBusinessService.SaveNewEntityInDatabase();
}
}
public class MyDomainBusinessService
{
public void SaveNewEntityInDatabase()
{
//...Do Something
}
}
Я могу дать вам гораздо больше информации, но, опять же, я не совсем уверен, что именно вам нужно. Я пропустил демонстрацию внедрения зависимостей в части WCF, чтобы попытаться упростить пример.
Надеюсь, это поможет.