Silverlight 4,子类化WebClient

4

根据建议,在多个网页上(例如使用CookieContainer类和WebClient类),我子类化WebClient类以便使用cookie:

public class MyWebClient : System.Net.WebClient
{

}

现在,当我初始化MyWebClient时:
MyWebClient wc = new MyWebClient();

出现了TypeLoadException错误。我的操作系统是Windows 7(日语版),因此错误信息不是英文的;我看到它与安全规则有关。可能的问题是什么?


你应该使用组合而不是继承。 - Denis
2个回答

2
WebClient的构造函数标记有SecuritySafeCritical属性。看起来这就是导致安全异常的原因。我尝试将同样的属性应用于MyWebClient的构造函数,但没有成功。从我所了解的来看,在Silverlight中这种事情是不允许的。例如,请参见这个问题
为了参考,确切的异常消息是:
System.TypeLoadException 重写成员时违反了继承安全规则:'MyWebClient..ctor()'。重写方法的安全辅助性必须与被重写方法的安全辅助性匹配。
我希望有一个更好的答案...

0
你需要实现一个带有SecuritySafeCritical属性的默认构造函数。我今天遇到了这个问题,这是解决办法。
public class MyWebClient : System.Net.WebClient
{
    [SecuritySafeCritical]
    public MyWebClient() : base() {}
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接