2011-07-08 52 views
3

安全的關鍵構造在Silverlight中(V4.0)安全模型,從類型派生的Shawn Farkas says安全規則:的子類透明型與在Silverlight

[...]我們看到, 應用類型可能只能從 其他應用程序類型或透明的 平臺類型派生。 (*)

的*的這一部分是:

(*)這真正在99.9%的情況下。關於類的默認構造函數的可見性還有另外一個規則(當我們深入挖掘安全模型時,我們會在下週進入該規則),這還要求基類的默認構造函數(如果它有一個)也必須透明。實際上,您通常不會在平臺中找到有趣的透明類型,這些透明類型也沒有透明的默認構造函數,所以這個規則通常不會起作用。

然而,有一個這樣的有趣的透明類型沒有透明的默認構造函數 - WebClient類。還有一個很好的理由想要繼承它 - 重寫GetWebRequest以提供對Cookie的支持。

作爲一個測試,我一直在嘗試,既沒有構造屬性如下......

public class MyWebClient : WebClient 
{ 
    [SecuritySafeCritical] // matches the attribute on the base class ctor 
    public MyWebClient() { } 
} 

...但出現以下錯誤兩種方式:

繼承安全在覆蓋成員時違反了規則:'MyWebClient..ctor()'。覆蓋方法的安全性可訪問性必須與被覆蓋的方法的安全性可訪問性相匹配。

在我看來,這是他提到的0.1%的情況。不幸的是,據我所知,接下來的帖子從來沒有擴大規則的內容。因此我有兩個問題:

  1. 有沒有人知道這個0.1%的規則是什麼?
  2. 鑑於1,是有可能從Web客戶端獲得在Silverlight 4?
+0

那是很令人沮喪。文件顯示沒有線索。你只有當你真的嘗試它或通過反射鏡看看時纔會發現。 – AnthonyWJones

回答

0

我對this question的回答涵蓋了你的第1部分。

答案2根本就沒有,但在Web客戶端的情況下,你可以,如果你有一定的理由這樣做創建您自己的。