2011-09-23 57 views
1

場景:衝突類型以兩種Silverlight中的DLL

我已經創建了兩個在Silverlight,MyCustomControl1和MyCustomControl2自定義控件。這兩個控件都有一個名爲Control.Generic的名稱空間。 Control.Generic具有名爲PageOrientation的枚舉類型。我想在我的項目中同時使用控件(MyCustomControl1和MyCustomControl2)。我在我的項目中添加了對這兩個控件的引用。現在,如何在我的類文件中包含兩個控件的名稱空間Control.Generic?目前,我已指定,如下所示:

using Control.Generic; 

但是,當我使用的是PageOrientation枚舉,我得到了下面的異常問題。

類型'Control.Generic.PageOrientation'存在於'MyCustomControl1.dll'和'MyCustomControl2.dll'中。

如何解決此衝突?

+0

不知道它是否適用於您,但由於Global限定符在這裏不起作用,因此您可以創建第二個類並在其中使用語句,並使該類成爲靜態並返回第二個用戶控件類型的對象那個班要上第一堂課。有點複雜。 – MStp

回答

2

想要在用戶控件之間共享類/枚舉等是很常見的。您應該避免在任何兩個庫中擁有完全相同的完全限定名稱。

你想要做的是有一個共同的庫,由兩個用戶控制庫引用,包含任何你可能想要重複使用的常見元素。

例如

Controls.Generic.dll包含Control.Generic.PageOrientationMyCustomControl1.dllMyCustomControl1.dll簡單地引用Controls.Generic.dll

作爲一個規則,你的庫和其中的命名空間應該匹配。如果他們不這樣做,你可能試圖做一些你不該做的事:)

基本上開始對待你自己的庫,像第三方控件一樣,並使用像他們這樣的命名標準(company.subarea.featureset等)。從長遠來看,這將爲您節省很多麻煩。