gpt4 book ai didi

c# - 继承 WeakReference 在 Silverlight 中抛出 ReflectionTypeLoadException

转载 作者:太空狗 更新时间:2023-10-29 22:55:39 25 4
gpt4 key购买 nike

我正在尝试在我的 Silverlight 应用程序中使用类型安全的 WeakReference。我正在按照本网站上的食谱进行操作:http://ondevelopment.blogspot.com/2008/01/generic-weak-reference.html仅使用 System.WeakReference 并省略引用序列化的内容。

当我尝试运行它时它抛出 ReflectionTypeLoadException,并显示以下消息:

"{System.TypeLoadException: Inheritance security rules violated whileoverriding member:'Coatue.Silverlight.Shared.Cache.WeakReference`1..ctor()'. Securityaccessibility of the overriding method must match the securityaccessibility of the method being overriden.}"

这是我使用的代码:

using System;

namespace Frank
{
public class WeakReference<T>
: WeakReference where T : class
{
public WeakReference(T target)
: base(target) { }

public WeakReference(T target, bool trackResurrection)
: base(target, trackResurrection) { }

protected WeakReference() : base() { }

public new T Target
{
get
{
return (T)base.Target;
}
set
{
base.Target = value;
}
}
}
}

最佳答案

正如 Thomas 所提到的,您不能从 silverlight 中的弱引用继承,但您可以包装它:

using System;

namespace Frank
{
public class WeakReference<T> where T : class
{
private readonly WeakReference inner;

public WeakReference(T target)
: this(target, false)
{ }

public WeakReference(T target, bool trackResurrection)
{
if(target == null) throw new ArgumentNullException("target");
this.inner = new WeakReference(target, trackResurrection);
}

public T Target
{
get
{
return (T)this.inner.Target;
}
set
{
this.inner.Target = value;
}
}

public bool IsAlive {
get {
return this.inner.IsAlive;
}
}
}
}

关于c# - 继承 WeakReference 在 Silverlight 中抛出 ReflectionTypeLoadException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3231945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com