我一直在試圖找出這個問題,我與依賴關係。我需要從A級到B級的參考,還有B級到A級。這甚至有可能嗎? A持有宣佈類型,我需要在B中使用,所以我需要訪問A到B和B到A.在達到方法時避免循環依賴
有沒有辦法解決這個問題或任何想法? A中的類型不能移動,B中的方法也不能移動。 (否則不會有任何問題)。
GUI - 廠 - XMLSerialize來,其中廠是A和XML是乙
//問候
我一直在試圖找出這個問題,我與依賴關係。我需要從A級到B級的參考,還有B級到A級。這甚至有可能嗎? A持有宣佈類型,我需要在B中使用,所以我需要訪問A到B和B到A.在達到方法時避免循環依賴
有沒有辦法解決這個問題或任何想法? A中的類型不能移動,B中的方法也不能移動。 (否則不會有任何問題)。
GUI - 廠 - XMLSerialize來,其中廠是A和XML是乙
//問候
這不僅聽起來可能,這聽起來很正常。例如,Person
課程可能會提及Department
課程,而Department
可能提及Person
。你會發現這個地方的例子。
只要儘量避免在Department
中製作Person
實例變量(屬性)。您希望儘可能縮短引用時間以避免內存泄漏。
該代碼具有循環引用,並編譯就好:
public class A {
B b;
}
public class B {
A a;
}
所以我不知道到底是什麼原因造成你的問題。也許你試圖把A和B分別作爲不同的程序集(又名不同的dll)?不幸的是,這是不可能的。
如果在那種情況的時候,那麼你可以做的最好的是這樣的:
大會1:
public interface IA { ... }
public interface IB { ... }
大會2(取決於1):
public class A {
IB b;
}
組件3(取決於2):
public class B {
IA a;
}
大會4(取決於1-3):
B b = new B();
A a = new A();
b.a = a;
a.b = b;
是的,我將不得不這樣做。非常感謝您的幫助! – user1501127 2013-03-22 07:43:57
你是什麼意思的 '持有聲明類型' 呢?當然可以用方法/屬性/域相互引用來聲明兩個類。 – MiMo 2013-03-21 21:26:16