在我的項目中,我有兩個庫,目前會導致循環依賴,我無法解決。C#如何解決由EditorAttribute使用引起的循環依賴?
一個庫爲整個解決方案提供了常見的數據結構。這個庫包含一個類似的結構:
namespace Common {
public class Foo {
//[Editor(typeof(UserEditor), typeof(UITypeEditor))]
public UInt32 OwnerId { get; set; }
}
public class User {
public UInt32 Id { get; set; }
}
}
在我們的解決方案的項目之一
現在,我們想通過一個PropertyGrid中和OwnerId
屬性編輯Foo
情況下應該用自定義編輯器進行編輯;這一個:
using Common;
namespace Common.Gui {
public class OwnerEditor : UITypeEditor {
public static List<User> Users { get; set; }
}
}
現在,我不能只是添加EditorAttribute
到Foo.OwnerId
,因爲這將創建一個循環依賴,我想保留出Common
到Common.Gui
引用反正。我還想避免將Common
中的代碼編入一個新的程序集中,因爲很多其他項目都參考了它。
我發現一個關於adding EditorAttribute
at runtime的問題,這聽起來像是一個完美的解決方案,但我無法適應我的問題。
但是,我同意安德斯的回答。你的通用模塊仍然知道你的GUI模塊,所以它不是一個好的設計。 – 2011-06-01 10:42:08
+1:你可以看到所有關於* .Design.dll的MS庫。 – leppie 2011-06-01 10:42:44
實際上,我試圖在最初解決依賴關係,但它導致編輯器不能在PropertyGrid中使用。編輯:我的錯誤,這是由錯字造成的。這個建議現在工作正常。 – 2011-06-01 10:50:31