我不確定如何在以下情況下避免循環引用。問題是由於循環引用引起的堆棧溢出。我如何使用Lazy或其他方法來解決此問題? 我不喜歡在任何地方通過容器。避免使用Unity 4.0 C時的循環引用#
public class MySocket : ISender
{
[Dependency]
public IVehicleManager VehicleManager { get; set; }
public void Connect()
{
Console.WriteLine("MySocket: Connect");
VehicleManager.AddActiveConnection();
}
}
public class MyVehicleManager : IVehicleManager
{
[Dependency]
public ISender Sender { get; set; }
public void AddActiveConnection()
{
Console.WriteLine("MyVehicleManager: Add");
}
public void SendPacketToVehicle(ISender sender)
{
Console.WriteLine("MyVehicleManager: Passing data");
sender.SendPacket();
}
}
static void Main(string[] args)
{
UContainer = new UnityContainer();
UContainer.RegisterType<IVehicleManager, MyVehicleManager>(new ContainerControlledLifetimeManager());
UContainer.RegisterType<MySocket, MySocket>(new ContainerControlledLifetimeManager());
MySocket myInstance = UContainer.Resolve<MySocket>();
}
我試過懶惰但ISender在MyVehicleManager中始終爲空。我如何正確使用Lazy或使用Lazy。我不知道。 – pats