【发布时间】:2014-04-10 08:51:05
【问题描述】:
我有库和控制台程序。程序动态加载库并获取 int 数组。但是程序抛出异常。你能帮我修一下吗? 我的图书馆:
public class Class1
{
public int [] arrayInt;
public Class1()
{
arrayInt = new int[5] {1,2,3,4,5};
}
}
我的程序:
Assembly asm = Assembly.LoadFile(@"C:\TestLibrary.dll");
Type Class1 = asm.GetType("TestLibrary.Class1") as Type;
var testClass = Activator.CreateInstance(Class1);
MemberInfo[] List = Class1.GetMember("arrayInt");
foreach (FieldInfo field in List)
{
if (field.FieldType.IsArray)
{
int[] array = (int[])field.GetValue(null);//throw exception here
Console.WriteLine("Count of list. "+array.length);
foreach (var element in array)
Console.WriteLine(element.ToString());
break;
}
}
异常信息:
System.Reflection.TargetException:非静态字段需要一个目标。在 System.Reflection.RtFieldInfo.CheckConsistency(Object target) 在 System.Reflection.RtFieldInfo.InternalGetValue(Object obj, StackCrawlMark& stackMark) 在 System.Reflection.RtFieldInfo.GetValue(Object obj) 在 Tets.Program.Main(String[] args )
附:你能修改代码,第一个数组不取自循环吗?
【问题讨论】:
-
如果我们知道异常是什么可能会有所帮助。
-
哪里抛出了异常?什么样的异常?
-
嗯...看起来您遇到了我们所说的“错误”。修复它的最佳办法是更改某些工作代码的损坏代码。一旦你完成了,你应该没问题。 (此评论/答案旨在与原始问题类似地缺乏有用信息)。
-
试试:
field.GetValue(testClass) -
这正是错误消息告诉您的内容! ;p
标签: c#