首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Silverlight中抛出ReflectionTypeLoadException的继承WeakReference

在Silverlight中,ReflectionTypeLoadException是一种异常,通常在尝试加载程序集时出现问题。WeakReference是一种用于存储对象引用的类,它不会阻止被引用的对象被垃圾回收。

在Silverlight中,当尝试加载程序集时,可能会遇到一些问题,例如丢失类型或程序集,这可能会导致ReflectionTypeLoadException异常。为了避免这种情况,可以使用WeakReference来存储对象引用,以便在垃圾回收时不会阻止对象被回收。

以下是一个使用WeakReference来处理ReflectionTypeLoadException的示例代码:

代码语言:csharp
复制
using System;
using System.Reflection;
using System.WeakReference;

public class ReflectionTypeLoadExceptionHandler
{
    private WeakReference<Assembly> _assemblyRef;

    public ReflectionTypeLoadExceptionHandler(Assembly assembly)
    {
        _assemblyRef = new WeakReference<Assembly>(assembly);
    }

    public Type[] GetTypes()
    {
        if (_assemblyRef.TryGetTarget(out Assembly assembly))
        {
            try
            {
                return assembly.GetTypes();
            }
            catch (ReflectionTypeLoadException ex)
            {
                // 处理ReflectionTypeLoadException异常
                return ex.Types;
            }
        }
        else
        {
            throw new InvalidOperationException("Assembly has been unloaded.");
        }
    }
}

在上面的示例代码中,我们使用WeakReference来存储Assembly对象的引用,并在尝试获取类型时处理ReflectionTypeLoadException异常。这样可以确保在垃圾回收时不会阻止Assembly对象被回收。

总之,在Silverlight中,可以使用WeakReference来存储对象引用,以避免ReflectionTypeLoadException异常。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

在Java8的Consumer中抛出异常

最近在实现公司内部一个通用svn数据工具类,其中有段代码是拿到当前更新后的数据进行下一步操作,用的是java8的Consumer实现的,代码如下: public void save(final DTO...Exception 这段代码一开始并没有什么问题,但是投入生产后发现有些异常数据导致服务器报错了,但是前台还是返回操作成功,debug查看后发现是异常被调用方吃掉了,原因了原生Consumer不支持异常抛出...,只能内部处理,接到反馈后,自己测试确实能复现,查看Consumer源码发现原生确实不支持抛出,查阅网络资料,发现只能重写一个Consumer方法,特此记录一下 @FunctionalInterface...中的异常抛出 * @author:Erwin.Zhang * @date: 2021-03-01 10:59:19 */ @FunctionalInterface public interface...import javax.validation.constraints.NotNull; * @ClassName: Throwing * @Description: 在Java8的Consumer中抛出异常

3.9K20

base64编码在silverlight中的使用

在传统的.net应用中,使用base64编码字符串是一件很轻松的事情,比如下面这段代码演示了如何将本地文件转化为base64字符串,并且将base64字符串又还原为图片文件. base64编码在传统.net...程序中的应用(by 菩提树下的杨过 ) using System; using System.Drawing; using System.Drawing.Imaging; using System.IO...; namespace Base64Study { /// /// base64编码在传统.net程序中的应用(by 菩提树下的杨过 http://yjmyzz.cnblogs.com...MemoryStream(b);             Bitmap bitmap = new Bitmap(ms); return bitmap;         }     } } 但是到了silverlight...环境中,这种简单的操作方式却无法使用了,幸好网上有一个开源的免费组件FluxJpeg,同时国外有高人已经利用该组件写出了将位图转化为base64的方法,这里我们借用一下即可: 代码 <UserControl

1.3K70
  • 静态成员在PHP中是怎么继承的?

    静态成员在PHP中是怎么继承的? 静态成员,也就是用static修饰的变量或者方法,如果搞不清楚它们实现的原理,就很容易会出现一些错误。这次我们来研究的是在继承中静态成员的调用情况。...; } $b = new B; $b->show(); 之前的文章中,我们有说过self的问题。self仅仅只是指向当前这个类。注意,是类,不是实例化后的对象。...好了,有了这个基础之后,我们知道静态成员是和类有关的,和对象无关。那么以下的代码也就更容易理解了。...通过类实例的add()方法进行操作后,$c因为是和类有关,所以不管是哪个实例对象,操作它之后都会是共享的。而$d作为普通变量,它的作用域仅限制在当前这个实例对象中。...详情可以查看之前的文章PHP中的Static 测试代码:https://github.com/zhangyue0503/dev-blog/blob/master/php/201912/source/%E9%

    1.4K20

    在Silverlight中动态绑定页面报表(PageReport)的数据源

    这种报表模型非常适合于在同一个报表中显示多个数据集数据的需求,而且不必精细的控制数据在页面中的显示位置。连续页面布局报表还允许用户通过折叠/ 展开的方式来隐藏/显示报表内容。...第一步:创建一个Silverlight项目 在VS2010中创建一个名为【PageReportDataSource_Silverlight_CSharp】的Silverlight应用程序 ?...中浏览报表内容 切换到【PageReportDataSource_Silverlight_CSharp】工程中,打开“MainPage.xaml”的设计视图,此时在VS工具箱的“ActiveReports...在【PageReportDataSource_Silverlight_CSharp】工程中,添加ReportService.asmx的引用: ?...源码下载:在Silverlight中动态绑定页面报表(PageReport)的数据源

    1.9K90

    读书笔记--override与new在继承中的区别

    但是有些问题还要是有比较深刻理解的,否则经常会在开发过程中遇到一些莫名其妙的问题,不明白背后的真相,自个儿费劲猜个半天,还是不知所以然,弄得信心全无。...1.override与new在继续中的差异 先上一段测试代码 using System; namespace Overload_Override { class Program     { static...注1处: B的引用指针还是Father类型指针,但如果子类Child的MyFunc在new关键字情况下,隐藏了父类的MyFunc,而把子类自己的MyFunc做为一个独立的新方法(可以极端的想象为此时子类的...在override关键字情况下,子类的同名方法会覆盖父母的方法,这里方法调用时,会递归查找子类中的同名方法最终版本,因而调用的是Child.MyFunc 注2处:其实跟注1是完全一样的 为啥要研究这个貌似...            Response.Write("CommPage.Page_Load"); //to do list         }             } } 其它页面继承自该页

    59590

    JavaScript的原型继承在使用中存在的安全问题

    JavaScript的原型很多人都知道也很好用,但是很多人在使用原型继承中导致的安全问题却很少人知道,接下来我们就来好好了解一下。...在真实开发中,我们经常会在代码中使用Property accessors 属性访问器,并且使用用户输入的参数去访问某个对象的属性。...这看起来可能是一个很稀疏平常的操作,但是往往在这个过程中我们的代码就已经产生了一个很大的安全漏洞!!!为什么这样写代码会产生安全问题?...黑客通过在原型上添加属性,他们可以解锁更多用户权限,比如网站修改权限,vip权限等等来攻击你的网站让你的网站承受损失。...在代码中减少属性访问器的使用尽可能使用.的方式去访问对象的属性或者使用 Map或Set,来代替我们的对象检查对象的原型链,查看新创建对象的原型是否被恶意添加了原本不该有的属性,或者属性被修改检查用户的输入

    19211

    【Java学习笔记之十九】super在Java继承中的用法小结

    1)有人写了个很好的初始化属性的构造函数,而你仅仅想要在其中添加另一些自己新建属性的初始化,这样在一个构造函数中调用另外一个构造函数,可以避免重复的代码量,减少工作量; 2)在一个构造函数中调用另外一个构造函数的时候应该用的是同一块内存空间...,在默认的构造函数中先初始化变量,调用另一个的时候覆写已经初始化的变量的值; 3)整个调用的过程和递归调用函数有点类似,不断充气球,直到整个气球膨胀起来,不断的深层递进,遇到停止标记,逐层的跳出来。      ...今天要总结的是 super 这个关键字的使用,super 在构造函数中出现的时候一般是当前这个类继承了其他的类,super 的出现就是为了调用父类的构造函数,贴段代码先 1 class Tiger {...所以我简单的总结了一下,“this()是调用自己其他的构造函数,super()是调用自己继承的父类的构造函数“,如果只想调用默认无参数的父类构造函数,不用在子类的构造函数当中写出来,但是实际编程的时候,...先说下自己的理解: 1)在新建一个基类的时候,不论递归调用几次自身的构造函数,最终你都会去调用父类的构造函数,(不是显式调用的话,系统会调用默认无参数的父类构造函数); 2)JAVA 中规定使用 this

    69450

    前端测试题:在类的继承中,关于super的说法错误的是?

    考核内容: 类的继承 题发散度: ★★ 试题难度: ★ 解题思路: Class 可以通过extends关键字实现继承,这比 ES5 的通过修改原型链实现继承,要清晰和方便很多。...class Point { } class ColorPoint extends Point { } 上面代码定义了一个ColorPoint类,该类通过extends关键字,继承了Point类的所有属性和方法...() } } 上面代码中,constructor方法和toString方法之中,都出现了super关键字,它在这里表示父类的构造函数,用来新建父类的this对象 super这个关键字,既可以当作函数使用...在这两种情况下,它的用法完全不同。 super作为函数调用时,代表父类的构造函数。ES6 要求,子类的构造函数必须执行一次super函数。...这是必须的,否则 JavaScript 引擎会报错。 参考代码: super是父类的引用,我们可以通过super来调用父类的方法和属性。

    3.1K30

    【Java学习笔记之二十】final关键字在Java继承中的用法小结

    在使用final修饰类的时候,要注意谨慎选择,除非这个类真的在以后不会用来继承或者出于安全的考虑,尽量不要将类设计为final类。...在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。...此处需要注意的一点是:因为重写的前提是子类可以从父类中继承此方法,如果父类中final修饰的方法同时访问控制权限为private,将会导致子类中不能直接继承到此方法,因此,此时可以在子类中定义相同的方法名和参数...,此时不再产生重写与final的矛盾,而是在子类中重新定义了新的方法。...这里有两种初始化方式,一种是在变量声明的时候初始化;第二种方法是在声明变量的时候不赋初值,但是要在这个变量所在的类的所有的构造函数中对这个变量赋初值。

    74780

    【Java学习笔记之二十一】抽象类在Java继承中的用法小结

    一、抽象类的基本概念 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。...,需要依靠子类采用向上转型的方式处理; (3)抽象类必须有子类,使用extends继承,一个子类只能继承一个抽象类; (4)子类(如果不是抽象类)则必须覆写抽象类之中的全部抽象方法(如果子类没有实现父类的抽象方法...虽然一个类的子类可以去继承任意的一个普通类,可是从开发的实际要求来讲,普通类尽量不要去继承另外一个普通类,而是去继承抽象类。 三、抽象类的使用限制 (1)抽象类中有构造方法么?...任何时候,如果要执行类中的static方法的时候,都可以在没有对象的情况下直接调用,对于抽象类也一样。...(5)有时候由于抽象类中只需要一个特定的系统子类操作,所以可以忽略掉外部子类。这样的设计在系统类库中会比较常见,目的是对用户隐藏不需要知道的子类。

    72890

    C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别

    如下就是一个父类中的虚函数: class A { public: virtual void out2(string s) { cout<<"A(out2):"<<s<<endl...; } }; 2.纯虚函数(pure virtual)        C++中包含纯虚函数的类,被称为是“抽象类”。...抽象类不能使用new出对象,只有实现了这个纯虚函数的子类才能new出对象。   C++中的纯虚函数更像是“只提供申明,没有实现”,是对子类的约束,是“接口继承”。   ...C++中的纯虚函数也是一种“运行时多态”。   ...普通函数是父类为子类提供的“强制实现”。   因此,在继承关系中,子类不应该重写父类的普通函数,因为函数的调用至于类对象的字面值有关。

    2K30

    【Java学习笔记之二十二】解析接口在Java继承中的用法及实例分析

    一、定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(...,否则这个类必须声明为抽象类 8、不允许创建接口的实例(实例化),但允许定义接口类型的引用变量,该引用变量引用实现了这个接口的类的实例 9、一个类只能继承一个直接的父类,但可以实现多个接口,间接的实现了多继承...三、接口的用法 1、精简程序结构,免除重复定义 比如,有两个及上的的类拥有相同的方法,但是实现功能不一样,就可以定义一个接口,将这个方法提炼出来,在需要使用该方法的类中去实现,就免除了多个类定义系统方法的麻烦...举例:鸟类和昆虫类都具有飞行的功能,这个功能是相同的,但是其它功能是不同的,在程序实现的过程中,就可以定义一个接口,专门描述飞行。...此时就可以显示出接口的作用了。 在上面的程序中添加如下两个类即可。

    69750

    详解 Java 中的四种引用

    软引用 这种引用的功能即是前言部分提到的:如果某个 Java 对象只被软引用所指向,那么在 JVM 要新建一个对象的时候,如果当前虚拟机所剩下的堆内存不足以保存这个要新建的对象的时候(即虚拟机将要抛出...也就是说:JVM 的每一次垃圾回收动作都会回收那些只被弱引用指向的对象。在 Java 1.2 之后,提供了 WeakReference 类来表示弱引用。...运行过程中你会看到电脑内存占用飙升,最后会抛出 OutOfMemoryError 异常,这个结果是显而易见的,现在来看看对软引用的测试,修改一下 main 方法中的代码:test.testSoftReference...在 JVM 抛出 OutOfMemoryError 异常之前会将只被软引用指向的对象回收掉(通过执行垃圾回收动作),因此不会抛出 OutOfMemoryError 异常。...super T> q) { super(referent, q); } } 可以看到 WeakReference 类继承了 Reference 类,可以猜到 Reference

    50530

    深入浅出JVM(十四)之内存溢出、泄漏与引用

    ,从强到弱分为:强引用 > 软引用 > 弱引用 > 虚引用平常我们使用的引用实际上是强引用,各种引用有自己的特点,下文将一一介绍强引用就是Java中普通的对象,而软引用、弱引用、虚引用在JDK中定义的类分别是...SoftReference、WeakReference、PhantomReference下图是软引用、弱引用、虚引用、引用队列(搭配虚引用使用)之间的继承关系内存溢出与内存泄漏为了更清除的描述引用之间的作用...内存充足情况下的弱引用 public static void test1() { WeakReference weakReference = new WeakReference...、不关闭资源都会导致内存泄漏使用最常见的就是强引用,强引用只有在可达性分析算法中不可达时才会回收,强引用使用不当是造成内存泄漏的原因之一使用SoftReference软引用时,只要内存不足触发Full...JDK中提供的WeakHashMap虚引用无法在程序中获取,与引用队列搭配使用,当虚引用被回收时,能够从引用队列中取出(感知),可以在直接引用不使用时,发出消息让JVM进行回收最后(一键三连求求拉~)本篇文章将被收入

    18621

    基于Cairngorm的Silverlight开发 - part1

    基于Cairngorm的Silverlight开发 - part1 概述 简单的说Cairngorm是在Silverlight开发中的一个轻量级的MVC开发框架。...View视图:也就是Silverlight中的自定义用户控件UserControl,可以与ModelLocator中的数据进行绑定,并对用户的操作(点击、鼠标滑过、滑出等)抛出自定义的事件CairngormEvent...FrontController前端控制器:接受View视图抛出的自定义的事件CairngormEvent并将他们映射到与之相对应的Command命令上。...各个部分如何联系在一起 大体工作流程:客户端的界面由View视图(自定义用户控件UserControl)组成,View通过使用Silverlight中的双向数据绑定Binding与ModelLocator...View根据用户的一些操作比如点击、鼠标滑过等抛出自定义的事件CairngormEvent,这些事件被FrontController监听并将其映射到与之相对应的Command命令上进行业务逻辑等处理并更新

    63940

    WeakHashMap

    WeakHashMap实现弱引用,是因为它的Entry是继承自WeakReference的 在WeakHashMap$Entry的类定义及构造函数里面是这样写的: private...for循环中每次都new一个新的WeakHashMap,在put操作后,虽然GC将WeakReference的key中的byte数组回收了,并将事件通知到了ReferenceQueue,但后续却没有相应的动作去触发...WeakHashMap 中的每个键对象间接地存储为一个弱引用的指示对象。因此,不管是在映射内还是在映射之外, 只有在垃圾回收器清除某个键的弱引用之后,该键才会自动移除。...处理此问题的一种方法是,在插入前将值自身包装在 WeakReferences 中,如:m.put(key, new WeakReference(value)), 然后,分别用 get 进行解包。...处理此问题的一种方法是,在插入前将值自身包装在WeakReferences中,如:m.put(key, new WeakReference(value)), 然后,分别用 get 进行解包。

    35810
    领券