2010-09-24 75 views
3

Visual Studio引發了一個無用的異常,我認爲這是由於我在具有相同名稱的兩個相似類中有多個依賴項屬性。相同的依賴項屬性,多個類

這些類是添加/編輯聯繫人,所以他們共享一些屬性,我的問題是這樣的。

我可以註冊一個屬性爲:

DependencyProperty.Register(/*...*/); 

或:

MyDP.AddOwner(/*...*/) 

的問題是,我不知道是否添加或編輯類將首先被​​實例化的方式(取決於用戶選擇),因爲它們被定義爲靜態的,所以我不能在其初始化邏輯中加入任何幻想......我沒有可以自我包含在2個類中的想法。

那麼如何在這種情況下設置依賴項屬性?

編輯:

類型初始化異常:關於 'CharterHouseTouchScreenDemo.Views.Membership.AddMembershipView' 的類型初始引發了異常。

我知道它是依賴屬性初始化程序之一,因爲當它逐步通過它甚至沒有得到構造函數。

此外,在這種情況下,他們沒有足夠的相似性成爲同一類。簡而言之,它們共享的唯一信息就是存儲在此依賴項屬性中的信息。

編輯2:

我驚訝,這不是更好地記錄,任何媒體,大規模應用的意外命名依賴屬性同樣的事情的機會相當大。尤其是像普通的事情BackgroundColourHeadingTextCurrentXYZ ...

我一直以爲你傳遞的主階級的類型,這樣就不會造成這樣的問題。

+0

首先,什麼是「無用的例外呢?」這是獲得答案的重要部分。 – 2010-09-24 12:42:49

+0

另外,爲什麼單獨的類?如果他們共享功能,是否有理由複製作品?不僅是,現在你做的工作加倍(並導致這類問題),這將可能是一個維護的噩夢(舉例來說,如果您發現錯誤,你必須記住要改變它的兩倍)。如果你真的需要單獨的課程,並且擁有第三個具有共享功能的課程,那麼你最好使用單個課程。根據您的設計,它可能是其他人從其派生的抽象類或接口,也可能是其他類調用的獨立類。 – 2010-09-24 12:44:04

+2

Egads。當靜態構造函數中出現斷點(無論是您定義的還是編譯器創建的)時,都會引發TypeInitializationException。它是拋出異常的一個包裝,它打破了靜態構造函數。所以TypeInitializationException.InnerException會告訴你到底發生了什麼。 – Will 2010-09-24 12:58:47

回答

1

不是一個真正的猶太答案,但它的工作原理:

#region SubscriptionFee 

/// <summary> 
/// SubscriptionFee Dependency Property 
/// </summary> 
public static readonly DependencyProperty SubscriptionFeeProperty = 
    DependencyProperty.Register("SubscriptionFee_2", typeof(decimal), typeof(EditMembershipViewModel), 
     new FrameworkPropertyMetadata((decimal)0)); 

/// <summary> 
/// Gets or sets the SubscriptionFee property. This dependency property 
/// indicates the new subscription fee for the customer. 
/// </summary> 
public decimal SubscriptionFee 
{ 
    get { return (decimal)GetValue(SubscriptionFeeProperty); } 
    set { SetValue(SubscriptionFeeProperty, value); } 
} 

#endregion SubscriptionFee 
0

首先,對不起,這不是作爲評論發佈。我不願意留下評論。

對於類名爲「AddContact和EditContact」的類,在我看來,您正在構建這些類來編輯可能是Contact類的東西?

你可能會對你的解決方案完全錯誤並導致自己更大的頭痛。

你可以提供關於代碼的更多細節嗎?例如,如果您有一個顯示聯繫人信息的GUI並且希望對其進行編輯,那麼比添加/編輯類有更好的解決方案。依賴屬性應該是你的聯繫人類的一部分,而不是他們自己的單獨編輯類。

也許你不妨就Model View View-ModelWPF command framework

花費一個半小時就這兩個話題讀了可能會導致您一個更優雅的解決方案,是少你一個hastle的閱讀起來。

+0

聯繫人信息保存在通過Web服務,這是建立Ø設計模式(這對我的生活我不記得名字的原則訪問數據庫) 反正..它是由在其被髮送到服務命令類填充訪問時,UpdateContactCommand和CreateContactCommand是編程完全孤立的,而它們共享相同的屬性名。因此,分離創建和編輯聯繫人類(p.s.有服務的優點,只是沒有真正遇到這裏...) – 2010-09-26 01:10:08