2016-04-08 39 views
0

Aşağıdaki senaryoda döngüsel başvurunun nasıl önleneceğinden emin değilim. Sorun, dairesel referans nedeniyle yığın akışdır. Bunu çözmek için Lazy veya başka bir yaklaşımı nasıl kullanırım? Konteyneri heryerden de geçmek istemiyorum.Unity 4.0 C kullanırken Dairesel referans C#

cevap

1

Bunu yapabilirsin:

public class MySocket : ISender 
{ 
    [Dependency] 
    public Lazy<IVehicleManager> VehicleManager { get; set; } 

    public void Connect() 
    { 
     Console.WriteLine("MySocket: Connect"); 
     VehicleManager.Value.AddActiveConnection(); 
    } 

} 

Ancak genel olarak, sen dairesel bağımlılıkları önlemek için gayret

. Uygulama alanınızı bilmiyorum ama MySocket'un IVehicleManager'a bağlı olduğunu garip buluyorum. Bağımlılığı tersine çevirmeyi denemelisiniz, ör. ISender'da bir etkinliği göstererek.

0

Öncelikli yol, MyVehicleManager ve MySocket'ın türetildiği bir süper sınıf oluşturmaktır. Ya da önerdiğin gibi ya da bir fabrikayı tembelleştir.

+0

Tembel'i denedim ancak ISender her zaman MyVehicleManager'da boştur. Lazy'i düzgün veya facotry'yi nasıl kullanırım. Hiç bir fikrim yok. – pats