代码之家  ›  专栏  ›  技术社区  ›  JosephStyons

如何从C#中的DLL中获取类型列表?

  •  4
  • JosephStyons  · 技术社区  · 15 年前

    using System.Reflection;
    
    ...
    
    static void Main(string[] args)
    {
        Assembly SampleAssembly;
        SampleAssembly = Assembly.LoadFrom("C:\\MyAssembly.dll"); //error happens here
    
        foreach (Type tp in SampleAssembly.GetTypes())
        {
            Console.WriteLine(tp.Name);
        }
    }
    
    /*
    This will give me:
    Unable to load one or more of the requested types.
    Retrieve the LoaderExceptions property for more information.
    
    I wish it would give me something like this:
    MyClass1
    MyClass2
    MyClass3
    */
    
    2 回复  |  直到 15 年前
        1
  •  5
  •   sdfa    15 年前

    使用ReflectionOnlyLoad而不是直接加载来防止运行时尝试运行目标程序集中的任何代码

        2
  •  2
  •   Kirk Woll    15 年前

    正在引发ReflectionTypeLoadException,因为您的一个类型在静态初始化期间引发异常。如果方法/属性/字段签名依赖于不可用的类型,则可能发生这种情况。我建议您捕获该异常,并按照建议检查该异常的LoaderExceptions属性的内容。