2016-04-01 28 views
0

Proje 2'de (C# Windows Form) bazı Project 1 (VB.NET) kodlarını kullanmak istiyorum ve bunun tersi de geçerlidir. Dairesel referans oluşturamadığımızı biliyorum, ancak bunu başarabileceğimiz başka bir yol var mı?Kullanım Döngülü başvuru

+2

C# projesi UI parçası iken VB.NET projesi iş mantığı ile anlaşma varsayalım? Eğer öyleyse, UI mantığını iş sınıfına alırsanız çok yanlış bir şey var. Bu, üçüncü projede proje 1 ve 2. – Martheen

+0

+1'deki tüm sınıflara atıfta bulunan üçüncü bir proje oluşturabileceğinizi söyledi. Bu ikisine referans veren üçüncü ya da ikisinden de referans almak istediğiniz her şeyden çıkarınız. – Claudius

cevap

1

İlk olarak, dairesel başvuru yanlış tasarım anlamına gelir. hem denir işlevlere sahiptir,

1. Özü "dairesel" kod Genelde

başka kütüphane oluşturmak: Eğer böyle bir şey gerekiyorsa, bu yöntemlerden birini kullanarak tasarımınızı değiştirmelisiniz "dairesel" kütüphaneler. Daha sonra hem Project1 hem de Project2'yi yeni oluşturulan Project3'e bağımlı hale getirin.

2. geri aramaları

olun sadece bir lib ikinci bağımlı - kodunuzdan herhangi Örneğin olmadan, tek bir diğerine bağlı olması gereken karar vermek zor, ama dan "Windows Form" Ben Project2'nin Project1'e bağımlı olması daha iyi olurdu. Yani, Project2'nin Project1'in her şeyi bildiği anlamına gelir. Ve sonra, Project1'den Project2'ye bir şey çağırmanız gerekirse, başlatma sırasında sadece geri çağırma sağlayın. E.g. Proje1, bazı uzun hesaplamalar yapan ve yapıldığında bilgilendirilmek istediğiniz işlevi içerir. Tamam sorun değil. Project2 işlemi geri arama ile başlatır (delegeleri arayın) ve kendi çalışmasıyla devam eder. Project1'deki işlev bittiğinde, Project2'den çağrılan geri çağırma işlevini kullanır (bu işlevi bilmese bile, fakat derleyici gerekli olmadığından, "uyumsuz" işlevi geri arama olarak sağlanamaz). Herhangi bir kod parçası sağlamadığınız için size daha fazla tavsiyede bulunmak zordur. Daha fazla yardıma ihtiyacınız varsa, lütfen basitleştirilmiş bir örnekle sorunuzu güncelleyin.

+0

İki form projeme bir göz atın. Ana formun örneğini çocuk formuna iletiyorum, böylece iki form aralarında veri gönderebilir: http://stackoverflow.com/questions/36251695/c-sharp-reference-two-forms – jdweng

+0

Tamam, kod biraz dağınık, ama anladığım kadarıyla veri paylaşmak istemiyorsun. Sadece Form2'nin Form1'den listeyi görüntülemesini istiyorsunuz. Bu, dairesel referans için hiç de geçerli değildir. Form1 yapıcıyı Form1'den parametre olarak almak için al ve bunu al. – Zoka