2012-08-29 15 views
2

我們有一個從WeakReference繼承的WeakRef類。該類最初是以標準.NET框架爲目標的命名空間的一部分。最近,我們已經遷移到.NET 4.5並決定使用可移植類庫。我們包括WeakRef,但在我們的Silverlight應用程序引用它導致以下運行時異常:在可移植類庫中,我是否可以從其Silverlight定義具有在.NET Framework中找不到的空構造函數的類繼承?

  • $異常{System.TypeInitializationException:爲「AxisModel.ImageDownloadAlert」的類型初始值引發異常。 ---> System.TypeLoadException:違反類型爲'Common.WeakRef`1的繼承安全規則。派生類型必須匹配基類型的安全可訪問性或不易訪問。如果基類具有非透明的默認構造函數,那麼派生類也必須具有默認構造函數,並且方法繼承規則適用於這兩種方法。

    在Common.WeakRefCallbackHostCore`1..ctor(對象SyncRoot上)
    在AxisModel.ImageDownloadAlert..ctor()
    在AxisModel.ImageDownloadAlert..cctor()

    ---內部異常結束堆棧跟蹤---
    在AxisModel.ImageDownloadAlert.get_Instance()
    在SLWebApp.App..ctor()}

    System.Exception的{System.TypeInitializationException}

我注意到WeakReference的Silverlight版本有一個空的默認構造函數,這在WeakReference的標準.NET版本中並不是這樣。我認爲這是引發異常的原因,因爲WeakRef不包含空的構造函數。問題是,向這個類添加一個空的構造函數會導致我們的WPF應用程序出現編譯錯誤。

有沒有辦法在我們的Silverlight和WPF應用程序之間共享WeakRef,而不會導致運行時和編譯錯誤?我正在尋找微創解決方案。

UPDATE:

已經有關於在Silverlight繼承WeakReference的一些討論。顯然,這是不可能的,所以人們不得不創建一個包含WeakReference實例的類。但是,無論WeakReference是否涉及,是否可以繼承類似於WeakReference的類,因爲它的Silverlight定義具有一個空的默認構造函數,而其.NET Framework定義沒有?

的討論可以在這裏找到:

Inherited WeakReference throwing ReflectionTypeLoadException in Silverlight

回答

1

,這是什麼的清樣?出於這個原因,我們不公開WeakReference的默認構造函數在Visual Studio 2012的RTM位中。你在用什麼版本?

相關問題