相关疑难解决方法(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万
查看次数

通过DTE按类型名称查找ProjectItem

给定一个类型名称,是否可以使用DTE来查找该类型所在的ProjectItem?类似于Navigate To...对话框在Visual Studio 2010中的工作方式.

我能找到的最接近的是Solution.FindProjectItem,但这需要一个文件名.

谢谢!

vspackage envdte vs-extensibility projectitem

10
推荐指数
1
解决办法
4457
查看次数