Проблема:
Предположим, класс:
public class MyAwesomeClass
{
private IDependCls _dependCls;
public MyAwesomeClass(IDependCls dependCls)
{
_dependCls = dependCls;
}
}
И еще где-то мне нужно получить экземпляр этого класса, например так:
public class SomewhereElse
{
public void AwesomeMethod()
{
//...
// AwesomeStuff
//...
var GetErDone = new MyAwesomeClass(); // PROBLEM! No constructor with 0 arguements
}
}
Вопрос в том, делаю ли я
Предложено решение 1:
A) нужно сделать дополнительный конструктор, который разрешает зависимость? Например:
public MyAwesomeClass() // new constructor
{
_dependCls = DependencyResolver.Current.GetService<IDependCls>();
}
public class SomewhereElse
{
public void AwesomeMethod()
{
var GetErDone = new MyAwesomeClass(); // IT WORKS!!
}
}
Предлагаемое решение 2:
B) использовать преобразователь внутри AwesomeMethod
прямо перед var GetErDone
public class SomewhereElse
{
public void AwesomeMethod()
{
var depCls = _dependCls = DependencyResolver.Current.GetService<IDependCls>();
var GetErDone = new MyAwesomeClass(depCls); // IT WORKS!!
}
}
Решение Autofac?
C) Какой-то другой способ Autofac?
Ищу передовой опыт, а также хорошее решение Autofac, если это возможно. Я думаю, что первый способ — худший, так как необязательные зависимости могут привести к большому беспорядку.
Резюме:
Как мне получить новый MyAwesomeClass()
, когда MyAwesomeClass
имеет зависимости?