c# - 类型转换匿名类型抛出类型转换错误

标签 c# asp.net casting type-conversion

在我的 Global.asax 文件中,我创建了一个包含匿名类型对象的数组列表

Application["userRecordsCountList"] = new ArrayList();

((System.Collections.ArrayList)Application["userRecordsCountList"]).Add(new { userCount = 12, logTime = DateTime.Now });

现在在我的 cs 文件中我有一个像这样的转换函数

T Cast<T>(object obj, T type)
{
    return (T)obj;
}

现在,当我运行循环以迭代数据并提取数据集中的数据时,出现错误 看代码

ArrayList countRecord = new ArrayList((System.Collections.ArrayList)Application["userRecordsCountList"]);

foreach (var item in countRecord)
    {
        dr = dt.NewRow();
        var record = Cast(item, new { userCount = "", logTime = "" });
        dr["Time"] = record.logTime;
        dr["Users"] = record.userCount;
        dt.Rows.Add(dr);
    }

错误是

Unable to cast object of type '<>f__AnonymousType0`2[System.Int32,System.DateTime]' to type '<>f__AnonymousType0`2[System.String,System.String]'.

请帮帮我..我已经尝试了我在 stackoverflow 或任何其他来源上找到的所有方法.....

谢谢

最佳答案

不要使用匿名类型 - 使用您需要的实际类型。匿名类型只能在方法中使用 - 它们不能作为参数或返回类型传入,并且通常不适合序列化。

另外,你不应该使用 ArrayList - 它不是类型安全的。使用像 List<T> 这样的通用集合相反。

关于c# - 类型转换匿名类型抛出类型转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8646224/

相关文章:

c# - ASP.Net Web 部件 : How to hide a webpart?

asp.net - 在 JavaScript 中寻址 Shockwave Flash 对象 (MultiPowUpload) 的属性

java - 如何将Java类转换为另一个类

asp.net 线程评论?

c++ - 类型转换内存 union

c++ - 如何不在 C++ 中将转换编译为枚举类型?

c# - 使用 .Net HttpListener 的多线程

c# - 为什么将整数分配给双重附加属性会出错?

c# - Protected Internal 和 Internal Protected 之间有区别吗?

asp.net - Facebox 在输入中添加逗号