首页
学习
活动
专区
工具
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异常。

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

相关·内容

Java8Consumer抛出异常

最近在实现公司内部一个通用svn数据工具类,其中有段代码是拿到当前更新后数据进行下一步操作,用是java8Consumer实现,代码如下: 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: Java8Consumer抛出异常

3.8K20

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作为普通变量,它作用域仅限制在当前这个实例对象。...详情可以查看之前文章PHPStatic 测试代码: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类型指针,但如果子类ChildMyFuncnew关键字情况下,隐藏了父类MyFunc,而把子类自己MyFunc做为一个独立新方法(可以极端想象为此时子类...override关键字情况下,子类同名方法会覆盖父母方法,这里方法调用时,会递归查找子类同名方法最终版本,因而调用是Child.MyFunc 注2处:其实跟注1是完全一样 为啥要研究这个貌似...            Response.Write("CommPage.Page_Load"); //to do list         }             } } 其它页面继承自该页

56890

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

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

18011

【Java学习笔记之十九】superJava继承用法小结

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

67550

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

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

3K30

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

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

67980

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

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

70390

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

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

1.2K30

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

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

68350

详解 Java 四种引用

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

48530

基于CairngormSilverlight开发 - part1

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

61940

Java弱引用、软引用、虚引用、强引用、 Finalizer引用

只有当JVM认为内存不足时,才会试图回收软引用指向对象,JVM会确保抛出OutOfMemoryError之前,清理软引用指向对象。...new WeakReference(referent); referent = null; //弱引用数据,垃圾回收器线程扫描它所管辖内存区域过程...(Java平台自身Cleaner机制)如:申请堆外内存时,JVM堆中会创建一个对应Cleaner对象,这个Cleaner类继承了PhantomReference,当DirectByteBuffer...当软引用,弱引用和幻象引用所引用对象被回收之后,对应SoftReference,WeakReference,PhantomReference 对象已经不再具有存在价值,需要一个适当清除机制,避免大量...我们系统里无法被构造(类被定义成package final 类型),Finalizer实例是一个双向链表结构,内部有prev与next指针,提供了add与remove方法将对象增加到链表与从链表删除对象

2.1K30

WeakHashMap

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

34010
领券