相关疑难解决方法(0)

调用Assembly.GetTypes()时如何防止ReflectionTypeLoadException

我正在尝试使用类似于此的代码扫描程序集以查找实现特定接口的类型:

public List<Type> FindTypesImplementing<T>(string assemblyPath)
{
    var matchingTypes = new List<Type>();
    var asm = Assembly.LoadFrom(assemblyPath);
    foreach (var t in asm.GetTypes())
    {
        if (typeof(T).IsAssignableFrom(t))
            matchingTypes.Add(t);
    }
    return matchingTypes;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,在某些情况下,我得到一个ReflectionTypeLoadException调用asm.GetTypes(),例如,如果程序集包含引用当前不可用的程序集的类型.

就我而言,我对导致问题的类型不感兴趣.我正在搜索的类型不需要不可用的程序集.

问题是:是否有可能以某种方式跳过/忽略导致异常但仍处理程序集中包含的其他类型的类型?

.net reflection plugins .net-assembly

95
推荐指数
3
解决办法
3万
查看次数

标签 统计

.net ×1

.net-assembly ×1

plugins ×1

reflection ×1