C# - Silverlight 中 .NET ArrayList.ToArray(Type) 的替换

2024-03-26

下面是我编写的一个简单方法(非常简化,所以我希望它仍然能够理解要点),用于获取字符串中数组元素的字符串表示形式,并将它们转换为这些值的实际数组。 t 是数组的类型。

DeserializeArray(string sArrayElements, out Array aValues, Type t)
{
    string[] sValues = ProcessArrayElements(sArrayAsString);
    ArrayList alValues = new ArrayList(sValues.Length);
    for(int i = 0; i < sValues.Length; ++i)
        alValues.Add(ProcessValue(sValues[ i ] ));
    aValues = alValues.ToArray(t.GetElementType());
    return true;
}

然后我会将此方法与下面的代码一起使用。 propertyInfo 是对象的属性,在本例中为 .IsArray() == true。 sArrayElements 只是包含数组的字符串表示形式的字符串(“val1,val2,...,valN”)

Array aValues;
if (DeserializeArray(sArrayElements, out aValues, propertyInfo.PropertyType))
    propertyInfo.SetValue(oObject, aValues, null);
else
    throw new FormatException("Unable to parse Array Elements: " + sArrayElements);

这在 .NET 中工作得很好,但在 Silverlight 中则不然,因为 ArrayList 对象被标记为 Internal 或其他东西(不能使用类型,因为访问级别等等)。

所以我正在寻找 ArrayList.ToArray(Type) 的替代方案。我不能只使用 List.ToArray() 因为 PropertyInfo.SetValue() 调用会在尝试将 object[] 转换为 Int32[] 等时犹豫不决。

我尝试在 DeserializeArray() 方法中执行类似 aValues = Array.CreateInstance(t.GetElementType()) 的操作,但我无法使用 [] 来分配值,并且您无法将值分配给 foreach(obj in objects) 。

然后,我尝试将 aValues 参数更改为通用 object[] 数组,但在调用 Array.CreateInstance() 时,我在运行时遇到相同的转换(装箱/拆箱)错误。

嗯是的;我正在尝试为 Silverlight 4 找到此问题的解决方案。任何帮助将不胜感激:)

  • James

未经测试,但我认为这应该满足您的要求:

DeserializeArray(string sArrayElements, out Array aValues, Type t) 
{ 
    string[] sValues = ProcessArrayElements(sArrayAsString); 
    aValues = new Array[sValues.Length];
    for(int i = 0; i < sValues.Length; ++i) 
        aValues.SetValue(Activator.CreateInstance(t,ProcessValue(sValues[i])),i); 

    return true; 
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# - Silverlight 中 .NET ArrayList.ToArray(Type) 的替换 的相关文章

  • 删除字符串 C 的第一个字符

    我试图删除字符串的第一个字符并保留其余部分 我当前的代码无法编译 我对如何修复它感到困惑 My code char newStr char charBuffer int len strlen charBuffer int i 1 char
  • MVC Core IActionResult 含义

    什么是IActionResult 我尝试查看 MSDN 和其他网站 但需要通用 常见 易于理解的答案 MSDN IActionResult https learn microsoft com en us dotnet api microso
  • 为什么在 C# 中成员初始值设定项中不允许这样做,但在 VB.Net Me 中允许

    我正在将 VB Net 应用程序转换为 C 并注意到在 VB Net 代码中 有一个私有成员变量 它是使用Me像这样 Private m ClassA As New MyCollection Of ClassA Me 当我将其转换为 C 代
  • 中间件 API 的最佳实践是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们正在开发一个中间件 SDK 采用 C 和 Java 语言 供游戏开发人员 动画软件开发人员 阿凡达开
  • OpenCV Visual Studio ntdll.dll

    我尝试在 Visual Studio 2013 上使用 OpenCV 2 4 10 创建一个项目 但由于以下异常 到目前为止我运气不佳 请建议帮助 TIA letstryitonemoretime exe Win32 Loaded C Us
  • CMake 和 Visual Studio:如何获得快速、安静的命令行构建?

    我有一个 cmake 项目 它成功地完成了我想要的一切 但我有大约 100 个文件 当我只需要重新编译一个文件时 我厌倦了每次看到生成的巨大输出 每个文件 30 行 明确地说 我正在编译cmake build 得到这个结果 我需要传递给编译
  • C 中的复合语句表达式

    下面的代码不起作用 int i void 999 100 添加括号就可以了 为什么 int i void 999 100 还有另一种方法可以完成此类分配 int i void 999 100 是什么让他们与众不同 在这份声明中 int i
  • 如何“杀死”Pthread?

    我正在学习 Pthreads 并且想知道杀死这样一个对象的最佳方法是什么 在寻找类似的问题后 我无法找到 明确 的答案 但请随时向我指出任何相关问题 我正在使用一个小型客户端服务器应用程序 其中服务器主线程正在侦听套接字上的客户端连接 每次
  • 使用成员作为实现者来实现接口

    我有实现 IA 的 A 类 现在我需要创建也应该实现 IA 的类 B B 类有 A 类的实例作为成员 有什么方法可以定义A的实例实现B类中的IA吗 interfase IA void method1 void method2 void me
  • 如何附加到 xml

    我有这个xml
  • 从窗口内容截取屏幕截图(无边框)

    我正在寻找有关如何使用 C 将表单内容保存在位图中的解决方案 我已经尝试过使用 DrawToBitmap 但它捕获了所有带边框的窗口 这就是这段代码的结果 public static Bitmap TakeDialogScreenshot
  • 在不使用 Thread.Sleep c# 的情况下延迟发送电子邮件

    我有一个 for 循环 它循环并每个循环发送一封电子邮件 现在我正在使用 thread sleep 但我希望用户仍然能够与程序交互 只需取消该循环即可 是否可以在不使用 thread sleep 的情况下做到这一点 您是否在 UI 线程上运
  • Qt mouseReleaseEvent() 未触发?

    我有一个显示图片的库 我们称之为 PictureGLWidget 其中 class PictureGLWidget public QGLWidget 所以 PictureGLWidget 扩展了 QGLWidget 在PictureGlWi
  • 如何使用 libpq 获取双精度值?

    The examples http www postgresql org docs 9 3 interactive libpq example htmllibpq 文档中展示了如何通过将整数值转换为主机字节序表示来获取整数值 我很好奇必须做
  • 在 try catch 块中返回到 catch 内是否不好?这是很好的做法

    在 try catch 块中从 C 中的 catch 块返回值是不好的做法吗 try Some code return 1 catch return 0 哪种使用 try catch 的方法是好的做法 不需要 只要返回的值是你想要的 你可以
  • win32 API 和 .NET 框架之间的选择

    我必须开发一个适用于 Windows 的应用程序 该应用程序将能够通过网络摄像头识别手势来控制鼠标 我将使用 vc 2008 进行开发 但我很困惑是使用 NET 框架还是核心 win32 API 性能对于我的应用程序非常重要 根据 Ivor
  • 如何使用简历实现一个“一网打尽”的异常处理程序?

    我想知道我怎样才能写一个抓住他们全部应用程序级别的异常处理程序将为用户提供恢复应用程序流程的选项 如果您正在运行 Windows 窗体应用程序 将处理程序添加到Application ThreadException event
  • 如何将 Metro 应用部署到桌面?

    我正在尝试将我的 C 应用程序部署到我的 Windows 8 Metro 桌面 我可以在 bin 文件夹中看到部署的文件 但是当我尝试打开它们时 出现以下错误 该应用程序只能在 AppContainer 的上下文中运行 我检查了属性上下文菜
  • 在类中使用 std::chrono::high_resolution_clock 播种 std::mt19937 的正确方法是什么?

    首先 大家好 这是我在这里提出的第一个问题 所以我希望我没有搞砸 在写这篇文章之前我用谷歌搜索了很多 我对编码 C 很陌生 我正在自学 考虑到有人告诉我 只为任何随机引擎播种一次是一个很好的做法 我在这里可能是错的 什么是正确 最佳 更有效
  • 编译器可以报告未知属性的错误吗?即使有范围?

    在N3291 7 6 1 3 5 属性语法和语义 decl attr grammar 关于如何属性是用我读过的源代码写的 使用一个属性范围令牌是有条件支持的 实现定义的行为 and For an 属性标记本国际标准中未指定 该行为是实现定义

随机推荐

  • 运行自动发现的 python 单元测试的子集

    简短的问题在 Python 的单元测试模块中使用自动发现方法时 是否可以在运行时选择要运行的单元测试 背景我正在使用 unittest 模块在外部系统上运行系统测试 请参阅下面的示例 sudo testcase unittest 模块允许我
  • 使用 500GB 内存时,Pandas pd.melt 在取消旋转 3.5 GB csv 时抛出内存错误

    使用 500GB 内存时 Pandas pd melt 在取消旋转 3 5 GB csv 时抛出内存错误 是否有任何解决方案 功能可用于 unpivot 巨大的 CSV 文件 当前的 csv 有超过 5000 列 我在同样的问题上苦苦挣扎
  • 错误的 UDP 校验和没有效果:为什么?

    我正在尝试测试 UDP 程序 如果它接收到 UDP 校验和错误的数据 会发生什么情况 奇怪的是 它似乎没有任何效果 并且有效负载被成功接收 至少在 OS X 上是通过环回接口成功接收的 下面是一个示例 其中使用以下方式发送数据SOCK RA
  • Elasticsearch 中的 _search 查询如何工作?

    问题更在于 Elasticsearch 节点如何交互以给出特定的搜索结果以及搜索请求的流程是什么 我参考了以下链接来理解 但它们对于我想要理解的内容不是很清楚 https www elastic co guide en elasticsea
  • 使用指针的数组长度[重复]

    这个问题在这里已经有答案了 数组长度可以使用以下方式计算 arr 1 arr然后简化为 arr 1 arr这进一步简化为1 arr arr 但是 当在与完成内存分配的函数不同的函数中计算长度时 会计算出错误的结果 例如 include
  • 为什么 Typescript 中需要 infer 关键字?

    为什么 Typescript 开发人员创建了infer关键词 根据文件 https www typescriptlang org docs handbook release notes typescript 2 8 html 这是如何使用它
  • ASP.NET MVC - 从 MemoryStream 下载 Excel 文件(损坏的文件)

    我正在尝试使用浏览器中的内置下载来下载 Excel 文件 基本上 在我的控制器中创建 Excel 文件后 下载工作正常 但是当我尝试在 Excel 中打开此文件时 我被告知该文件已损坏 Excel 无法打开文件 Report xlsx 因为
  • 释放从新放置分配的内存

    考虑下面的代码 include iostream include conio h using namespace std class sample private int i public sample int ii 0 i ii cout
  • 打开android studio配置文件时发生OOM错误

    安卓版本 8 0 0 当我调用file list时 如果我打开android studio profiler来监控内存 很容易出现OOM错误 如下 java lang OutOfMemoryError EnsureLocalCapacity
  • .NET Core 初始请求缓慢

    面对创建新的小型服务的任务 我想知道是否有一些最佳实践指南来确保该服务的快速响应时间 包括前 1 3 个请求 首先 我喜欢使用 NET Core 和 webapi 模板 NET Core 6 创建服务 但是创建其中一些后 我注意到服务的初始
  • Java 数组和列表的共同祖先

    在 NET 中 数组和列表都以 Enumerable 作为祖先 因此接受 Enumerable 作为参数的方法可以同时接收数组和列表作为其参数 我想知道Java中是否有类似的东西 不 Java 中没有类似的东西 我通常建议你设计 API 方
  • setTimeOut 和本地函数

    我正在开发 Axe 4 0 我正在尝试在具有本地函数的作业中使用 Object setTimeOut 方法 如中所述msdn 文档 http msdn microsoft com en US library aa857865 28v ax
  • 在类模板中为成员函数定义单个模板,并在成员函数中使用两个模板

    我目前正在学习模板如何在 C 中工作 特别是 我正在查看类模板中的单个成员函数模板 为了理解我的意思 代码如下 foo h template
  • 向光标位置插入元素(表格)

    我想创建一个具有自定义样式的新 Table 元素 并将其附加到文档中的当前光标位置 我发现可以通过以下方式获取当前位置 var cursor DocumentApp getActiveDocument getCursor 返回一个 Posi
  • ASP.Net 中 URL 中的 UrlEncoding Plus(+)

    我正在对一个字符串进行加密和 Base64 处理 一切都运行良好 直到我从 QueryString 集合中检索加密的字符串 加密文本包含一个加号 当我检索加密的字符串时 曾经有加号的地方现在变成了空格 正如您可以想象的那样 这不会解密 我尝
  • 搜索颠覆历史(全文)

    有没有办法对颠覆存储库执行全文搜索 包括所有历史记录 例如 我编写了一个在某处使用过的功能 但后来不需要它 所以我对文件进行了 svn rm d 但现在我需要再次找到它以将其用于其他用途 svn 日志可能会说 删除了未使用的内容 之类的内容
  • 具有可点击区域的可缩放 SVG - Android

    我正在做一个非常简单的应用程序 它需要显示一个包含广义世界地图的 SVG 通过单击城市名称 svg 矩形 我需要显示与该城市对应的另一个 SVG 此外 所有 SVG 都必须支持缩放和平移 我设法让 SVG 支持缩放和平移 效果非常完美 为此
  • Excel 加载项失败并显示 0x8004063E

    我有一个 Excel 添加 它曾经完美地工作 最近 许多客户收到以下错误 在这个问题的最后 环境详情 Windows 7 8 64 位 微软 Office 2013 64 位 Add in是在 net 3 5下编译的 任何帮助将不胜感激 H
  • Scala 模板将样式应用于 inputText 的标签 [Play 2 HTML5 辅助标签]

    我正在使用带有输入助手的 scala 模板 我使用的类属性应用样式
  • C# - Silverlight 中 .NET ArrayList.ToArray(Type) 的替换

    下面是我编写的一个简单方法 非常简化 所以我希望它仍然能够理解要点 用于获取字符串中数组元素的字符串表示形式 并将它们转换为这些值的实际数组 t 是数组的类型 DeserializeArray string sArrayElements o