以下のシナリオで循環参照を避ける方法がわかりません。循環参照によるスタックオーバーフローが問題です。これを解決するために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>();
}
私はLazyを試しましたが、ISenderはMyVehicleManagerで常にnullです。 Lazyを適切に使用するにはどうすればよいですか?何も思いつきません。 – pats