c# - 在 C# 中动态定义结构体

标签 c# .net dynamic struct

我正在尝试根据给定的输入文件(包含成员名称和类型列表)在 C# 中动态定义结构。为了解决这个问题,假设该文件具有以下布局:


[Struct Name 1]
parameter1, type1, typical_value1
parameter2, type2
parameter3, type1

[Struct Name 2]
  ... etc

我一直在阅读this post一段时间以来,还没有在 C# 中实现它——我的问题是,这可以做到吗?此外,不使用unsafe是否可以完成?

我最初想坚持使用结构体的原因是因为我将使用它来序列化通过 I/O 接收的 byte[] 以及我拥有的扩展方法现在可以完美地适用于静态定义的结构;不过,我愿意将其重写为包装类,以使其更容易。

我的想法是,根据用户知道通过 I/O 连接的内容,我可以选择多个文件之一作为解析源。换句话说,文件可以在运行时更改,但一次只能选择一个文件。

最佳答案

是的,从技术上讲这是可以做到的——但不是以一种非常有用的方式。您必须使用 TypeBuilder 在运行时创建类型(这非常复杂),但下一个问题是很难与仅在运行时已知的类型进行交互。通常这是通过 object 或接口(interface)完成的 - 但这两者都需要对 struct 进行装箱,使得作为 struct 不是很有用> 首先。唯一的解决方法是通过 T 进行泛型(然后可以使用“约束”模型来避免装箱) - 您需要这样的方法:

Foo<T>(T data);

Foo<T>(T[] data);

通过 methodInfo.MakeGenericMethod(...).Invoke(...) 切换到的。

关于c# - 在 C# 中动态定义结构体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24119967/

相关文章:

c# - .NET Label.TextAlign 似乎不起作用

c# - 放大 Canvas 点击事件 winrt c#

c# - 具有一对一关系的 EF Core 批量插入

c# - 在 asp.net 中使用 c# 发送邮件脚本

c# - Visual Studio 中 C# 字符串的语法和拼写检查器?

php - 使用URL变量时防止RFI攻击

php - 实现第一,上一个,下一个和最后一个导航的方法

jquery - 使用 jQuery 加载内容的积极因素是否超过 seo 消极因素?

c# - 正则表达式阿拉伯语发声匹配

c# - 无法使用客户端 ID 和密码访问用户照片