为什么我不能反思私人集会?

时间:2019-06-13 06:34:20

标签: c# .net reflection jit system.reflection

我制作了一个名为CarLibrary(CarLibrary.dll)的私人装配。 然后我创建了一个客户端控制台应用程序,并添加了CarLibrary的引用,以下是控制台应用程序的主要方法

using CarLibrary; 
... 
static void Main(string[] args)
{
   SportsCar s = new SportsCar();  //CarLibrary contains a type-SportsCar class
   Type t = s.GetType();
   MethodInfo[] mi = t.GetMethods();
   foreach (MethodInfo m in mi)
   {
      ...
   }
}

它有效,但是如果我将main方法更改为:

static void Main(string[] args)
{
   string typeName = "CarLibrary.SportsCar";
   Type t = Type.GetType(typeName);
   // Reflection doesn't work
}

为什么它不能以这种方式工作,我确实添加了CarLibrary.dll的引用,并且客户端控制台应用程序的清单确实具有

.assembly extern CarLibrary
{ ... }

因此,在运行时,CLR应该找到CarLibrary.dll并将其加载到内存中,Refelction应该可以工作!

,如果我将其更改为:

string typeName = "System.Int32";
Type t = Type.GetType(typeName);

它确实起作用。我真的很困惑。

0 个答案:

没有答案