【发布时间】:2014-10-24 00:22:53
【问题描述】:
异常消息:Constructor on type StateLog not found。
我有以下代码不适用于一个类:
List<T> list = new List<T>();
string line;
string[] lines;
HttpWebResponse resp = (HttpWebResponse)HttpWebRequest.Create(requestURL).GetResponse();
using (var reader = new StreamReader(resp.GetResponseStream()))
{
while ((line = reader.ReadLine()) != null)
{
lines = line.Split(splitParams);
list.Add((T)Activator.CreateInstance(typeof(T), lines));
}
}
它不适用的类的构造函数与它适用的其他类完全相同。唯一的区别是这个类将传递 16 个参数而不是 2-5 个。构造函数如下所示:
public StateLog(string[] line)
{
try
{
SessionID = long.Parse(line[0]);
AgentNumber = int.Parse(line[1]);
StateIndex = int.Parse(line[5]);
....
}
catch (ArgumentNullException anex)
{
....
}
}
就像我说的,它适用于使用它的其他 5 个类,唯一的区别是输入的数量。
【问题讨论】:
-
更严肃地说,也许您应该花一些时间告诉我们它是如何不起作用的。错误信息?
-
StateLog类在该范围内是否可见?它有额外的构造函数重载吗? -
我认为问题标题的错误消息足以推断问题。会更新。
-
它发生的那一行将使这个问题变得更好。依靠调用者来确保数组具有正确的长度,并且在该数组的正确位置包含可解析为正确类型的项目,这会导致代码容易出错。有通用的,也有危险的。这种方法很危险。我保证到明天,或者也许是后天,你就会忘记它是如何工作的。任何其他进入此代码的人都会迷路。 IMO,将数组作为参数传递是非常危险的。
-
您的构造函数不接受 16 个参数,而只接受一个 string[] 类型的参数。
标签: c# constructor constructor-exception