来自DLL的GetTypes?

时间:2011-10-27 14:08:08

标签: c# dll

我有以下代码来创建DLL:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;

namespace Plugin
{

    public class QtObject : DependencyObject
    {
        [...]
    }

    public class Timer : DependencyObject
    {
        [...]
    }
}

我拿了DLL并希望用这段代码进行内省:

var library = Assembly.LoadFrom(libraryPath);
IEnumerable<Type> types = library.GetTypes();

在第二行,我收到以下错误: “无法加载一个或多个请求的类型。请检索LoaderExceptions属性以获取更多信息。”

据我所知,我应该在我的Collection中获得2个“对象”,对应于我的类没有?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

读取dll的应用程序可能没有引用您的dll的某些引用。

答案 1 :(得分:0)

这样做怎么样.....

  Assembly SampleAssembly;
  SampleAssembly = Assembly.LoadFrom("c:\\Sample.Assembly.dll");
  MethodInfo Method = SampleAssembly.GetTypes()[0].GetMethod("Method1");
// Obtain a reference to the parameters collection of the MethodInfo instance.
ParameterInfo[] Params = Method.GetParameters();
// Display information about method parameters.
// Param = sParam1
//   Type = System.String
//   Position = 0
//   Optional=False
foreach (ParameterInfo Param in Params)
{
    Console.WriteLine("Param=" + Param.Name.ToString());
    Console.WriteLine("  Type=" + Param.ParameterType.ToString());
    Console.WriteLine("  Position=" + Param.Position.ToString());
    Console.WriteLine("  Optional=" + Param.IsOptional.ToString());
}

请浏览此链接for more info