Silverlight 4, создание подклассов WebClient - PullRequest
4 голосов
/ 10 сентября 2011

Следуя совету, я увидел на нескольких веб-страницах (например, Использование CookieContainer с классом WebClient ), я подклассифицировал класс WebClient для использования с ним файла cookie:

public class MyWebClient : System.Net.WebClient
{

}

Теперь, когда я инициализирую MyWebClient:

MyWebClient wc = new MyWebClient();

выдает исключение TypeLoadException. Моя ОС - Windows 7 (японская), поэтому сообщение об ошибке не на английском языке; Я вижу, это связано с правилами безопасности. В чем может быть проблема?

Ответы [ 2 ]

2 голосов
/ 10 сентября 2011

Конструктор WebClient помечается атрибутом SecuritySafeCritical. И, похоже, именно это вызывает исключение безопасности. Я попытался применить тот же атрибут к конструктору MyWebClient, но это не сработало. Из того, что я читал, такого рода вещи просто не разрешены в Silverlight. Например, см. этот другой вопрос .

Для справки, точное сообщение об исключении:

System.TypeLoadException

Нарушение правил безопасности наследования при переопределяющий член: 'MyWebClient..ctor ()'. Безопасность доступа переопределяющий метод должен соответствовать доступности безопасности переопределяемый метод.

Хотелось бы, чтобы был лучший ответ ...

0 голосов
/ 13 января 2013

Вам необходимо реализовать конструктор по умолчанию с атрибутом SecuritySafeCritical. Была ли эта проблема сегодня, и это было решением.

public class MyWebClient : System.Net.WebClient
{
    [SecuritySafeCritical]
    public MyWebClient() : base() {}
}
...