У меня есть два класса, которые зависят друг от друга. Очевидно, что, когда я использую Ninject следующим образом:Впрыск впрыска не работает
public Class Class1()
{
private readonly class2;
public Class1(IClass2 class2)
{
this.class2 = class2;
}
}
public Class Class2()
{
private readonly class1;
public Class1(IClass1 class1)
{
this.class1 = class1;
}
}
Это приводит к циклической зависимости.
Я знаю, что способ решить эту проблему - это инъекция свойств. Но я попытался это:
public Class Class1()
{
private readonly class2;
public Class1()
{
}
[Inject]
IClass2 Class2
{
get { return this.class2; }
set { this.class2 = value; }
}
}
в сочетании с этим:
public Class Class2()
{
private readonly class1;
public Class1(IClass1 class1)
{
this.class1 = class1;
}
}
И на перевернутом пути, когда я впрыснуть во втором со свойством и в первом с конструктором. Оба они приводят к циклической зависимости. Третий способ, когда я использую вложение свойств в обоих из них, приводит к исключению StackOverflow. Каков способ внедрения такого типа инъекций? Имея в виду, что оба эти класса обслуживания.
Переплет:
/// <summary>
/// Creates the kernel that will manage your application.
/// </summary>
/// <returns>The created kernel.</returns>
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
try
{
kernel.Bind<Func<IKernel>>().ToMethod(ctx =>() => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel);
return kernel;
}
catch
{
kernel.Dispose();
throw;
}
}
/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
kernel.Bind(b => b
.From(Assemblies.ProjectServices) // link to the services there
.SelectAllClasses()
.BindDefaultInterface());
}
Впрыск недвижимости должен решить циклическую зависимость, можете ли вы показать нам, где исключение? – YuvShap
У меня есть контроллер, где я вставляю Class1 (это зависит от него). Когда я пытаюсь инициализировать его, это исключает исключение. – StefanL19
Можете ли вы показать нам привязку ядра ninject? – YuvShap