DataAccessLayer.cs
в DataAccess
проекта:Лучший способ придать зависимость во время выполнения
public class Foo : IFoo
{
public void Bar()
{
// Implementation
}
}
IDataAccessLayer.cs
в DataAccess.Contracts
проекта:
public interface IFoo
{
void Bar();
}
MainClass.cs
в Main
проекта:
class Program
{
public static IFoo Foo { get; set; } // Her I want to inject dependency directly at runtime
static void Main(string[] args)
{
}
}
Я хочу INJ ect зависимость в Foo
собственности непосредственно во время выполнения.
Я бы хотел использовать файл конфигурации вместо атрибутов для сопоставления между классом и интерфейсом, если это возможно.
Каков наилучший способ для этого? Как это сделать с Unity, если это возможно?
Итак, вы хотите использовать экземпляр DataAccessLayer в своей основной функции? –
@VasilutLucian Да –
Dependency Injection - это создание * слабо связанного приложения, которое позволяет вводить зависимости (обычно через конструктор класса). Часть этого процесса заключается в том, чтобы ограничить дизайн, включая удаление статических переменных (или свойств) и замену их на * управление жизненным циклом * контейнера DI. Таким образом, нет, вы не можете просто выбросить какой-либо дизайн и ожидать, что Dependency Injection будет адаптироваться к нему, вам нужно адаптировать дизайн к DI-friendly. Прочитайте [Injection Dependency in .NET] (https://www.manning.com/books/dependency-injection-in-dot-net) для понимания дизайна с помощью DI. – NightOwl888