DataAccessLayer.cs
в DataAccess
проекта:Зависимость впрыска во время выполнения с помощью Unity
public class DataAccessLayer : IDataAccessLayer
{
public void Bar()
{
// Implementation
}
}
IDataAccessLayer.cs
в DataAccess.Contracts
проекта:
public interface IDataAccessLayer
{
void Bar();
}
MyClass.cs
в Main
проекта (консольного приложения):
public class MyClass
{
public IDataAccessLayer Dal { get; set; } /// Her I want to inject dependency at runtime
}
Я хочу ввести зависимость в MyClass.Dal
собственности непосредственно во время выполнения. Я использую Unity и файл конфигурации в главном проекте:
<?xml version="1.0" encoding="utf-8" ?>
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<container>
<register type="DataAccess.Contracts.IDataAccessLayer, DataAccess.Contracts" mapTo="DataAccess.DataAccessLayer, DataAccess"/>
</container>
</unity>
Я просто установить Unity с NuGet в моем главном проекте.
Если у меня есть var instance = new MyClass();
в основном методе моего основного проекта, instance.Dal
- null.
Как ввести значение Dal во время выполнения?
Update 1:
В идеале я хотел бы все зависимости моего основного проекта должны быть решены с помощью сценария на мой основной метод или непосредственно через конфигурацию. Является ли это возможным ?
Что такое 'Log'? Вы не указали код для этого. – CodingYoshi
К сожалению, я обновил свой ответ –
Проверьте это: https://msdn.microsoft.com/en-us/library/ff649447.aspx. Это объясняет вложение свойств Unity. –