2011-01-30

WebClient を継承して謎のエラー

週末、Phone 7 のプログラム書いていました。 

WebClient 便利だな~と思いながら使っていたんですが、 "Accept-Encoding: gzip" みたいな事ができないんですね。 他にも Range なんかも使えないみたいです。


twitter で愚痴を書くと、速攻で抜本的な解決策(笑)が返ってきたのですが、せっかく便利なクラスがあるのに手書きしないといけないのはちょっと残念ですね。
しかも今回の場合 WebClient を継承しただけでは問題の解決になりそうにないので、結構大変そうな気がします...。




ところで、普通に WebClient を継承したクラスを書こうとすると謎の例外で落ちてしまいますね。
(謎というか英文の意味が理解できないだけですが...)
public class MyWebClient : WebClient
{
}
 

なにやら security accessibility をあわせろとか言っていますが、いまひとつ意味がわかりません。
一刻も早く Developer Tools の Visual Studio が日本語化される事を願うばかりです。
Inheritance security rules violated by type: 'MyWebClient'.
Derived types must either  match the security accessibility of the base type or be less accessible.
If the base class has a non-transparent default constructor, the derived class must also have a default constructor, and the method inheritance rules apply across those two methods.

最終的にはこんな感じで何とかなりましたが、本来の目的は果たせずじまいです。
public class MyWebClient : WebClient
{
    [System.Security.SecuritySafeCritical]
    public MyWebClient() : base()
    {
    }
}
 

これでデータは手軽に取れるんですが、あまり効率的じゃないのが悩みどころです。やはり手作りするしかないんでしょうか....。


0 件のコメント: