C# 如何在反射中的二维字符串数组上使用activate.createinstance
嗨,苏的好人们 我在这里面临着一个小小的挑战,我不太明白。因此,我使用以下方法创建了一个2d数组:C# 如何在反射中的二维字符串数组上使用activate.createinstance,c#,reflection,createinstance,C#,Reflection,Createinstance,嗨,苏的好人们 我在这里面临着一个小小的挑战,我不太明白。因此,我使用以下方法创建了一个2d数组: var portTypes = assembly.GetExportedTypes(); string[,] commonIPPort= new string [2,2]; foreach (var v in portTypes ) { if (v.FullName == "iControl.CommonIPPortDefinition")
var portTypes = assembly.GetExportedTypes();
string[,] commonIPPort= new string [2,2];
foreach (var v in portTypes )
{
if (v.FullName == "iControl.CommonIPPortDefinition")
{
commonIPPort= new string[,] { { v.Name, v.FullName }};
}
}
dynamic ports= Array.CreateInstance(typeof(object),commonIPPort.Length);
这就是我得到空错误的地方:
目标项目
for (int i = 0; i < commonIPPort.Length; i++)
{
item = Activator.CreateInstance(Type.GetType(commonIPPort[i,i+1]));
}
for(int i=0;i
所以我的问题是如何在2d字符串上使用createinstance
提前谢谢。因为我从0索引开始,它不会让它出现,因为它是空的,我想索引是从1开始的,请注意您在
if
中所做的操作。当条件是否为真时,您是否正在创建实例?(可以使用断点进行检查)。如果没有-那么你有[2,2]
数组,数组中填充了null
(你有错误),如果是-你将得到索引自动失效异常
(因为i+1
)。如果它找到'iControl.CommonIPPortDefinition',我基本上是在创建实例,因为那里有1300个对象。我正在尝试为“ports”(ports=Array.CreateInstance(typeof(object),commonIPPort.Length);)创建该实例,因为下一行是ports.address和ports.portnumberStart,并显示准确的错误消息和堆栈跟踪。更有可能的情况是,您在中设置了ArgumentNullException
,然后在其上设置一个断点并检查i
和commonIPPort[i,i+1]
值。我打赌你会在那里找到一个null
,而不是字符串。为什么?我试图在前面解释:v.FullName
从来都不是iControl。不管是什么,您的空数组中都填充了null
。但是,即使如果
条件为真,您仍然会得到索引自动失效异常
。是的,您是对的,它是空值。我得重做一次!谢谢@Sinatr