我制作了一个名为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);
它确实起作用。我真的很困惑。